国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript 高級技巧——“防篡改對象”的注意要點

atinosun / 356人閱讀

摘要:防篡改對象不可擴展對象默認情況下,所有對象都是可擴展的不可擴展可以使用這個方法嚴格模式下會拋出錯誤一旦設置防擴展,對象就無法添加新的屬性和方法。已有的屬性方法不受影響,這些屬性方法仍然可以修改和刪除。檢測是否被凍結,用方法

防篡改對象 不可擴展對象

默認情況下,所有對象都是可擴展的:

var person = {
    name: "Oliver"
};
person.age = 18;
console.log(person.age); //18

不可擴展可以使用這個方法: Object.preventExtensions(obj);

var person = {
    name: "Oliver"
};
person.age = 18;
console.log(person.age); //18
Object.preventExtensions(person);
person.gender = "male";
console.log(person.gender); //undefined

嚴格模式下會拋出錯誤;

一旦設置防擴展, 對象就無法添加新的屬性和方法。 已有的屬性方法不受影響, 這些屬性方法仍然可以修改和刪除。

var person = {
    name: "Oliver"
};
person.age = 18;
console.log(person.age); //18
Object.preventExtensions(person);
person.gender = "male";
console.log(person.gender); //undefined
person.name = "Oli";
console.log(person.name); //Oli

另外還可以通過使用Object.isExtensible()方法來確定對象是否可擴展

var person = {
    name: "Oliver"
};
person.age = 18;
console.log(person.age); //18
Object.preventExtensions(person);
person.gender = "male";
console.log(person.gender); //undefined
person.name = "Oli";
console.log(person.name); //Oli
console.log(Object.isExtensible(person)); //False
密封對象

密封對象可以使用方法: Object.seal(obj);

var person = {
    name: "Oliver"
};
Object.seal(person);
person.age = 18;
console.log(person.age); //undefined
person.name = "Oli";
console.log(person.name); //"Oli"
delete person.name;
console.log(person.name); //"Oli"

一旦設置密封對象, 不可以進行擴展, 已有屬性和方法不可以刪除, 但是屬性值是可以修改的。

嚴格模式嘗試添加或刪除對象成員會拋出錯誤;

var person = {
    name: "Oliver"
};
Object.seal(person);
console.log(Object.isSealed(person)); //True
console.log(Object.isExtensible(person)); //False
凍結的對象

凍結對象可以使用方法: Object.freeze(obj);

一旦設置凍結對象, 既不可以擴展, 又是密封的, 只有通過訪問器的set函數才可以修改屬性值, 其他情況下不允許修改。

var person = {
    name: "Oliver"
};
Object.freeze(person);
person.name = "Oli";
console.log(person.name); //"Oliver"
person.age = 18;
console.log(person.age); //undefined
console.log(Object.isFrozen(person)); //True

檢測是否被凍結,用Object.isFrozen()方法

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78789.html

相關文章

  • JS程序設計高級技巧

    摘要:關于定時器要記住的最重要的事情是指定的時間間隔表示何時將定時器的代碼添加到隊列,而不是何時實際執行代碼。多個定時器之間的執行間隔會比預期的小解決辦法處理中數組分塊,,函數節流,實際進行處理的方法實際執行的代碼初始處理調用的方法 一、高級函數 安全類型檢測 Object.protitype.toString.call(value) 作用域安全的構造函數 function Pers...

    Codeing_ls 評論0 收藏0
  • JavaScript 高級技巧——“高級定時器”注意要點

    摘要:為了規避這個問題,可以使用定時器對事件處理程序進行節流。當第二次調用該函數時,它會清除前一次的定時器,并設置另一個。如果前一個定時器已經執行過了,這個操作就沒有任何意義。然而如果前一個定時器尚未執行,其實就是將其替換為一個新的定時器。 高級定時器 為了解決setInterval的一些執行問題, 下面是采用鏈式setTimeout的方式來規避: setTimeout(function()...

    rubyshen 評論0 收藏0
  • JavaScript 高級技巧——“高級函數”注意要點

    摘要:語法如下注意這里使用的并不是的,是內部函數的。函數柯里化的基本方法是使用一個閉包返回一個函數。當函數被調用時,返回的函數還需要設置一些傳入的參數。 安全的類型檢測 typeof操作符 檢測數據類型的結果可能會不正確; instanceof操作符 操作符在多個全局作用域下存在問題: var value = []; var isArray = value instanceof Array;...

    solocoder 評論0 收藏0
  • JavaScript高級程序設計》22章 JavaScript高級用法

    摘要:和的定義是指多少時間之后將回調函數加入到的執行隊列之中回調函數是否立即執行取決于當前的執行隊列是否空閑。比較好的例子如下回調函數執行其他操作假如內部的執行時間為那么的回調函數至少要等待才執行。 1、惰性加載函數 (判斷各個瀏覽器中是否支持某個屬性) function addEvent(elem, type, handler){ if(elem.addEventListener...

    wanglu1209 評論0 收藏0
  • JS紅皮書解讀之篡改對象

    摘要:注意一旦把對象定義為防篡改,就無法撤銷了。使用阻止對象擴展注意嚴格模式下,不是而是報錯。使用凍結對象對于庫作者而言,凍結對象可防止有人修改庫的核心對象。 showImg(https://segmentfault.com/img/remote/1460000019753620); 前言:去年7月份在簡書寫的,發現后端、React中也有體現,覺得有必要在微信上分享下。 注意:一旦把對象定義...

    張遷 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<