此处的本教程指出
“如果使用delete运算符删除属性,则in运算符将对该属性返回false。”
下面是他们为此说明的示例之一:
var trees = new Array('redwood', 'bay', 'cedar', 'oak', 'maple');
delete trees[3];
3 in trees; // returns false
但是,我的问题是,在删除trees [3]之前,Object.getOwnPropertyNames(trees)
返回["0", "1", "2", "3", "4", "length"]
,但是在删除后返回["0", "1", "2", "4", "length"]
。为什么会这样呢?我知道,如果删除一个属性,则该属性将不存在,但在这种情况下,属性也是数组的索引。对这种奇怪的行为有什么好的解释吗?
您不是要删除原型。您正在删除对象实例的属性。
由于JS中的数组只是对象,因此过程相同:
const array = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 3
}
delete array[2]
console.log(Object.getOwnPropertyNames(array))
不同的是,删除数组元素时,数组长度不受影响。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句