gpt4 book ai didi

javascript - 为什么 hasOwnProperty(o, "dummy") 在 defineProperty(o, 'false' ) 之后是 "dummy"

转载 作者:行者123 更新时间:2023-11-29 21:42:44 24 4
gpt4 key购买 nike

有人能告诉我为什么下面示例中的“hasOwnProperty”为假,而 getOwnPropertyDescriptor 不为空吗?

根据 MDN:

http://jsfiddle.net/rr55tukb/

var _g = {};

Object.defineProperty(_g, "dummy", {
get: function () {
return 1
},
set: function () {},
enumerable: true
});

var hasOwnProperty = Object.hasOwnProperty(_g, "dummy");
var getOwnPropertyDescriptor = JSON.stringify(Object.getOwnPropertyDescriptor(_g, "dummy"));

输出是:

hasOwnProperty=false
getOwnPropertyDescriptor={"enumerable":true,"configurable":false}

最佳答案

hasOwnProperty 是对象本身的属性。您正在检查 Object 对象是否具有该属性,而不是 _g 对象是否具有该属性:

var hasOwnProperty = _g.hasOwnProperty("dummy");

或者:

Object.prototype.hasOwnProperty.call(_g, 'dummy')

后者更安全,因为 _g 在技术上可以覆盖 hasOwnProperty 属性。

关于javascript - 为什么 hasOwnProperty(o, "dummy") 在 defineProperty(o, 'false' ) 之后是 "dummy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32188963/

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