gpt4 book ai didi

javascript - ECMAScript 5 中此属性描述符和属性赋值之间的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:50:09 25 4
gpt4 key购买 nike

我正在阅读更多关于 ECMAScript 5 的内容(在浏览器中,使用 ES5-shim 我知道它并不支持所有内容)。考虑到我有这个对象(从 this post 偷来的),只是为了消除任何混淆:

var Person = {
firstName: null, // the person’s first name
lastName: null // the person’s last name
};

这有什么区别吗:

var Employee = Object.create(Person, {
id: {
value: null,
enumerable: true,
configurable: true,
writable: true
}
});

还有这个:

var Employee = Object.create(Person);
Employee.id = null;

// Or using jQuery.extend
$.extend(Employee, {
id : null
});

据我所知,以这种方式定义属性时,可枚举、可配置和可写都设置为 true(这也将向后兼容旧版 JavaScript 引擎)。我是不是遗漏了什么,或者只要我希望这是所需的行为,我就可以省略冗长的属性描述符吗?

最佳答案

它们是一样的。

通过赋值创建新属性时

obj.prop = val;

新创建的属性的所有三个 bool 属性都设置为 true


此外,请注意,通过 Object.defineProperty

添加属性时
Object.defineProperty( obj, 'prop', {
value: val
});

bool 属性设置为 false(默认情况下)。

关于javascript - ECMAScript 5 中此属性描述符和属性赋值之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957687/

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