成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

深入理解delete操作符

NSFish / 3540人閱讀

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

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

原型中聲明的屬性和對(duì)象自帶的屬性

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

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

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

(function() {
    //不能刪除"arguments",因?yàn)橛蠨ontDelete
    delete arguments; // false;
    typeof arguments; // "object"
    //也不能刪除函數(shù)的"length",因?yàn)橛蠨ontDelete
    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");
總結(jié)

下面是對(duì)于 JavaScript 中 delete 操作是如何工作的簡(jiǎn)短的總結(jié):

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

屬性擁有內(nèi)部屬性,其中 DontDelete 這個(gè)內(nèi)部屬性負(fù)責(zé)確定一個(gè)屬性是否能夠被刪除

在全局或者函數(shù)代碼中的變量和函數(shù)聲明總是創(chuàng)建帶有 DontDelete 特性的屬性

函數(shù)參數(shù)總是活動(dòng)對(duì)象的屬性, 并且?guī)в?DontDelete

在 Eval 代碼中聲明的變量和函數(shù)總是創(chuàng)建不帶 DontDelete 特性 的屬性

新的未聲明的屬性在生成時(shí)帶空的內(nèi)部屬性,因此也不帶 DontDelete 特性

永遠(yuǎn)不要相信宿主對(duì)象對(duì) delete 操作做出的反應(yīng)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94136.html

相關(guān)文章

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

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

    wh469012917 評(píng)論0 收藏0
  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸?,因此文中只看懂?8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...

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

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

    loostudy 評(píng)論0 收藏0
  • 深入理解:ES6中的Set和Map數(shù)據(jù)結(jié)構(gòu),Map與其它數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換

    摘要:學(xué)習(xí)筆記工作中常用到的語法只是簡(jiǎn)單提及和,今天有空于是寫了這篇文章深入理解中的和數(shù)據(jù)結(jié)構(gòu),與其它數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換。的提供了新的數(shù)據(jù)結(jié)構(gòu)。本身是一個(gè)構(gòu)造函數(shù),用來生成數(shù)據(jù)結(jié)構(gòu)。 文中的內(nèi)容主要是來自于阮一峰的《ES6標(biāo)準(zhǔn)入門》(第三版)?!秾W(xué)習(xí)ES6筆記──工作中常用到的ES6語法》只是簡(jiǎn)單提及Set和Map,今天有空于是寫了這篇文章──《深入理解:ES6中的Set和Map數(shù)據(jù)結(jié)構(gòu),M...

    Cristalven 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<