摘要:防篡改對象不可擴展對象默認情況下,所有對象都是可擴展的不可擴展可以使用這個方法嚴格模式下會拋出錯誤一旦設置防擴展,對象就無法添加新的屬性和方法。已有的屬性方法不受影響,這些屬性方法仍然可以修改和刪除。檢測是否被凍結,用方法
防篡改對象 不可擴展對象
默認情況下,所有對象都是可擴展的:
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
摘要:關于定時器要記住的最重要的事情是指定的時間間隔表示何時將定時器的代碼添加到隊列,而不是何時實際執行代碼。多個定時器之間的執行間隔會比預期的小解決辦法處理中數組分塊,,函數節流,實際進行處理的方法實際執行的代碼初始處理調用的方法 一、高級函數 安全類型檢測 Object.protitype.toString.call(value) 作用域安全的構造函數 function Pers...
摘要:為了規避這個問題,可以使用定時器對事件處理程序進行節流。當第二次調用該函數時,它會清除前一次的定時器,并設置另一個。如果前一個定時器已經執行過了,這個操作就沒有任何意義。然而如果前一個定時器尚未執行,其實就是將其替換為一個新的定時器。 高級定時器 為了解決setInterval的一些執行問題, 下面是采用鏈式setTimeout的方式來規避: setTimeout(function()...
摘要:語法如下注意這里使用的并不是的,是內部函數的。函數柯里化的基本方法是使用一個閉包返回一個函數。當函數被調用時,返回的函數還需要設置一些傳入的參數。 安全的類型檢測 typeof操作符 檢測數據類型的結果可能會不正確; instanceof操作符 操作符在多個全局作用域下存在問題: var value = []; var isArray = value instanceof Array;...
摘要:和的定義是指多少時間之后將回調函數加入到的執行隊列之中回調函數是否立即執行取決于當前的執行隊列是否空閑。比較好的例子如下回調函數執行其他操作假如內部的執行時間為那么的回調函數至少要等待才執行。 1、惰性加載函數 (判斷各個瀏覽器中是否支持某個屬性) function addEvent(elem, type, handler){ if(elem.addEventListener...
摘要:注意一旦把對象定義為防篡改,就無法撤銷了。使用阻止對象擴展注意嚴格模式下,不是而是報錯。使用凍結對象對于庫作者而言,凍結對象可防止有人修改庫的核心對象。 showImg(https://segmentfault.com/img/remote/1460000019753620); 前言:去年7月份在簡書寫的,發現后端、React中也有體現,覺得有必要在微信上分享下。 注意:一旦把對象定義...
閱讀 854·2023-04-26 00:11
閱讀 2655·2021-11-04 16:13
閱讀 2101·2021-09-09 09:33
閱讀 1472·2021-08-20 09:35
閱讀 3817·2021-08-09 13:42
閱讀 3604·2019-08-30 15:55
閱讀 1039·2019-08-30 15:55
閱讀 2218·2019-08-30 13:55