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

資訊專欄INFORMATION COLUMN

深入理解delete操作符

NSFish / 3537人閱讀

摘要:原型中聲明的屬性和對象自帶的屬性原型中聲明的屬性和對象自帶的屬性其實這些屬性也是在原型中的可以認為是帶有特性的,無法被刪除。注意內置對象的一些屬性擁有內部屬性,因此不能被刪除特殊的變量活化對象的屬性擁有任何函數實例的返回形參長度屬性也擁有。

http://bubkoo.com/2014/01/23/...

原型中聲明的屬性和對象自帶的屬性

==原型 prototype 中聲明的屬性和對象自帶的屬性(其實這些屬性也是在原型 prototype 中的)可以認為是帶有 DontDelete 特性的,無法被刪除==。例如:

//原型中聲明的屬性無法被刪除
function C() { this.x = 42; }
C.prototype.x = 12;
var o = new C();
o.x;     // 42, 構造函數中定義的o.x
delete o.x;
o.x;     // 12,  prototype中定義的o.x,即使再次執行delete o.x也不會被刪除
//對象自帶的屬性無法被刪除
var re = /abc/i;
delete re.ignoreCase;
re.ignoreCase; // true, ignoreCase無法刪除
內置對象和DontDelete

些屬性不能被刪除的根本原因在于:==這些屬性擁有內部屬性 DontDelete==,該內部屬性控制著該屬性是否可以被刪除。注意:內置對象的一些屬性擁有內部屬性 DontDelete,因此不能被刪除; 特殊的 arguments 變量(活化對象的屬性)擁有 DontDelete; 任何函數實例的 length (返回形參長度)屬性也擁有 DontDelete。與函數 arguments 相關聯的屬性也擁有 DontDelete,同樣不能被刪除:

(function() {
    //不能刪除"arguments",因為有DontDelete
    delete arguments; // false;
    typeof arguments; // "object"
    //也不能刪除函數的"length",因為有DontDelete
    function f() {};
    delete f.length; // false;
    typeof f.length; // "number"
}) ();


--------

(function(foo, bar) {
    delete foo; // false
    foo; // 1
    delete bar; // false
    bar; // "bah"
}) (1, "bah");
總結

下面是對于 JavaScript 中 delete 操作是如何工作的簡短的總結:

變量和函數聲明都是活化對象(Activation Object) 或全局對象(Global Object)的屬性

屬性擁有內部屬性,其中 DontDelete 這個內部屬性負責確定一個屬性是否能夠被刪除

在全局或者函數代碼中的變量和函數聲明總是創建帶有 DontDelete 特性的屬性

函數參數總是活動對象的屬性, 并且帶有 DontDelete

在 Eval 代碼中聲明的變量和函數總是創建不帶 DontDelete 特性 的屬性

新的未聲明的屬性在生成時帶空的內部屬性,因此也不帶 DontDelete 特性

永遠不要相信宿主對象對 delete 操作做出的反應

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

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

相關文章

  • 編寫高質量Javascript的要點-Review深入理解Javascript系列(一)

    摘要:編寫高質量的要點深入理解系列一知識點最小全局變量全局變量命名易與第三方的腳本引起沖突所以盡可能少的使用全局變量是很重要的相關策略有命名空間模式或是函數立即自動執行,但是要想讓全局變量少最重要的還是始終使用來聲明變量。 Title: 編寫高質量Javascript的要點-Review深入理解Javascript系列(一)date: 2017-6-9 14:14:20 status: p...

    wh469012917 評論0 收藏0
  • JavaScript深入淺出

    摘要:理解的函數基礎要搞好深入淺出原型使用原型模型,雖然這經常被當作缺點提及,但是只要善于運用,其實基于原型的繼承模型比傳統的類繼承還要強大。中文指南基本操作指南二繼續熟悉的幾對方法,包括,,。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 怎樣使用 this 因為本人屬于偽前端,因此文中只看懂了 8 成左右,希望能夠給大家帶來幫助....(據說是阿里的前端妹子寫的) this 的值到底...

    blair 評論0 收藏0
  • 深入理解ES6筆記(七)Set集合和Map集合

    摘要:創建并添加項目可以使用數組來初始化一個,并且構造器會確保不重復地使用這些值使用方法來測試某個值是否存在于中移除值使用方法來移除單個值,或調用方法來將所有值從中移除。屬性的初始化將數組傳遞給構造器,以便使用數據來初始化一個。 主要知識點:Set的基本操作,Weak Set,Map的基本操作,Weak MapshowImg(https://segmentfault.com/img/bVbf...

    loostudy 評論0 收藏0
  • 深入理解:ES6中的Set和Map數據結構,Map與其它數據結構的互相轉換

    摘要:學習筆記工作中常用到的語法只是簡單提及和,今天有空于是寫了這篇文章深入理解中的和數據結構,與其它數據結構的互相轉換。的提供了新的數據結構。本身是一個構造函數,用來生成數據結構。 文中的內容主要是來自于阮一峰的《ES6標準入門》(第三版)。《學習ES6筆記──工作中常用到的ES6語法》只是簡單提及Set和Map,今天有空于是寫了這篇文章──《深入理解:ES6中的Set和Map數據結構,M...

    Cristalven 評論0 收藏0

發表評論

0條評論

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