gpt4 book ai didi

javascript - 检查对象中的 "constructor"键的奇怪 javascript 行为

转载 作者:数据小太阳 更新时间:2023-10-29 05:47:53 25 4
gpt4 key购买 nike

我实际上不确定我是否只是偶然发现了 javascript 中不需要的行为,或者这是否是某种有意为之的行为。

以下代码生成一个 true 语句:

var test= {"test":1}
document.write("constructor" in test);

http://jsfiddle.net/xyatxm2g/2/

如果我将其更改为以下代码,它会按预期返回 false:

var test= {"test":1}
document.write(test.hasOwnProperty("constructor"));

http://jsfiddle.net/fg06ovvc/2/

最佳答案

hasOwnProperty method ,顾名思义,查看对象本身是否具有该属性。

但是当您在测试中使用 'propertyName' 时,您不仅要查看对象自身的属性,还要查看继承而来的属性。

在这种情况下,constructor是位于 Object's prototype 内的属性,因此所有对象都具有该属性,因为它们都继承自 Object

引用自 MDN

Every object descended from Object inherits the hasOwnProperty method. This method can be used to determine whether an object has the specified property as a direct property of that object; unlike the in operator, this method does not check down the object's prototype chain.

关于javascript - 检查对象中的 "constructor"键的奇怪 javascript 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32877450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com