1.deleteddelete是唯一真正无残留地删除对象某个属性的方法,但是比它的“替代”设置object[key]=undefinedvarmyObject慢100倍={"ircEvent":"PRIVMSG","method":"newURI","re??gex":"^http://.*"};deletemyObject.regex;console.log(myObject);delete运算符将删除指定的来自对象的属性。如果删除成功返回真,否则返回假。但是,需要考虑以下情况:如果你试图删除的属性不存在,那么delete不会有任何效果,但仍然会返回true如果对象的原型链上存在同名属性作为要删除的属性,则删除该属性后,对象会在原型链上使用该属性(即删除操作只会作用于自己的属性)。不能从全局范围或函数范围中删除使用var声明的任何属性。在这种情况下,删除操作不能删除全局范围内的任何函数(无论函数来自函数声明还是函数表达式)除了不能删除全局范围内的函数,对象(object)中的函数是可以用delete操作删除的。任何用let或const声明的属性都不能从声明它的范围中删除。无法删除不可配置的属性。这意味着无法删除Math、Array、Object等内置对象的属性以及使用Object.defineProperty()方法设置为不可设置的属性。2.obj.field=undefined;这个选择不是本题的正确答案!但是,如果您小心使用它,您可以大大加快某些算法的速度。如果在循环中使用delete,出现性能问题,请阅读详细解释varobj={field:1};obj.field=undefined;3。在数组中使用delete在数组中,与普通的旧对象不同,使用delete会在表单中留下垃圾,null在数组中创建一个“洞”,并且长度不会改变。vararray=[1,2,3,4];deletearray[2];/*预期结果-->[1,2,4]*实际结果-->[1,2,null,4]*/4。在数组中使用splicearrayObject.splice(index,howmany,item1,...,itemX)索引:必需。指定添加/删除项目的整数,使用负数指定从数组末尾开始的位置。多少:必填。要删除的项目数。如果设置为0,项目将不会被删除。item1:可选。添加到数组的新项目。vararr=newArray(6)arr[0]="乔治"arr[1]="约翰"arr[2]="托马斯"arr[3]="詹姆斯"arr[4]="阿德鲁"arr[5]="Martin"document.write(arr+"
")arr.splice(2,0,"William")document.write(arr+"
")/**George,John,Thomas,James,Adrew,Martin*George,John,William,Thomas,James,Adrew,Martin*/本文转载自微信公众号“伟大的走向世界”,您可以通过以下二维码关注。转载本文请联系大千世界公众号。
