1,、deletevar myObject = {"ircEvent": "PRIVMSG","method": "newURI","regex": "^http://.*"};delete myObject.regex;console.log(myObject); 如果你試圖刪除的屬性不存在,,那么delete將不會(huì)起任何作用,,但仍會(huì)返回true 如果對(duì)象的原型鏈上有一個(gè)與待刪除屬性同名的屬性,那么刪除屬性之后,,對(duì)象會(huì)使用原型鏈上的那個(gè)屬性(也就是說(shuō),delete操作只會(huì)在自身的屬性上起作用) 任何使用 var 聲明的屬性不能從全局作用域或函數(shù)的作用域中刪除,。 這樣的話,,delete操作不能刪除任何在全局作用域中的函數(shù)(無(wú)論這個(gè)函數(shù)是來(lái)自于函數(shù)聲明或函數(shù)表達(dá)式) 除了在全局作用域中的函數(shù)不能被刪除,在對(duì)象(object)中的函數(shù)是能夠用delete操作刪除的,。 任何用let或const聲明的屬性不能夠從它被聲明的作用域中刪除,。 不可設(shè)置的(Non-configurable)屬性不能被移除。這意味著像Math, Array, Object內(nèi)置對(duì)象的屬性以及使用Object.defineProperty()方法設(shè)置為不可設(shè)置的屬性不能被刪除,。 2,、 obj.field = undefined;這個(gè)選擇不是這個(gè)問(wèn)題的正確答案!但是,,如果你小心使用它,,你可以大大加快一些算法。如果您delete在循環(huán)中使用并且在性能方面存在問(wèn)題,請(qǐng)閱讀詳細(xì)解釋 var obj = {field: 1 }; obj.field = undefined; 3,、數(shù)組中使用delete 在數(shù)組中,,與普通的舊對(duì)象不同,使用delete在表單中留下垃圾,,null在數(shù)組中創(chuàng)建一個(gè)“洞”, 而且length不變,。 var array = [1, 2, 3, 4];delete array[2];/* Expected result --> [1, 2, 4] * Actual result --> [1, 2, null, 4] */ 4、數(shù)組中使用splice arrayObject.splice(index,howmany,item1,.....,itemX) index: 必需,。整數(shù),,規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié) 尾處規(guī)定位置,。 howmany: 必需,。要?jiǎng)h除的項(xiàng)目數(shù)量。如果設(shè)置為 0,,則不會(huì)刪除項(xiàng)目,。 item1: 可選。向數(shù)組添加的新項(xiàng)目,。 var arr = new Array(6)arr[0] = "George"arr[1] = "John"arr[2] = "Thomas"arr[3] = "James"arr[4] = "Adrew"arr[5] = "Martin"document.write(arr + "<br />")arr.splice(2,0,"William")document.write(arr + "<br />")/**George,John,Thomas,James,Adrew,Martin*George,John,William,Thomas,James,Adrew,Martin*/ 完~ 聲明: 本文于網(wǎng)絡(luò)整理,,版權(quán)歸原作者所有,如來(lái)源信息有誤或侵犯權(quán)益,,請(qǐng)聯(lián)系我們刪除或授權(quán)事宜,。 |
|
來(lái)自: 風(fēng)聲之家 > 《JS》