gpt4 book ai didi

javascript - 是否可以使用 "create"作为 JavaScript 对象文字中的属性名称?

转载 作者:行者123 更新时间:2023-11-28 00:27:10 26 4
gpt4 key购买 nike

我刚刚注意到 IDEA/JSHint 告诉我,包含名为“create”的属性的对象文字会覆盖对象中的方法。

文字本质上是:

module.exports = {email:{create:"me@me.com"}};

并且(显然?)对象有一个在 EcmaScript5.js 中定义的 create 方法

/**
@param {Object} proto
@param {Object} [props]
@static
@return {Object}
*/
Object.create = function(proto,props) {};

这是否会导致一个难以理解的问题?我猜测这个保留方法不适用于文字或尚未使用默认构造函数实例化的对象。只是好奇。

最佳答案

现有答案是正确的,但缺少一些重要的细节。你所做的绝对没问题,在任何 JavaScript 环境中都不会导致错误。

Object.create method已经多次提到的是静态,这意味着它是Object构造函数本身的属性,而不是其原型(prototype)的属性。您不会覆盖它,甚至不会隐藏它。它仍然可以访问:

var obj = { create: 'something' };
console.log(obj.create); // 'something'
console.log(Object.create); // function create() { [native code] }

我不确定为什么 JSHint 或任何其他静态分析工具会警告不要使用 create 作为属性标识符,除非它可能会导致一些潜在的困惑。

即使您担心 create 是 JavaScript 中的保留字也不是问题,因为现代 JavaScript 环境允许使用保留字作为属性标识符,并且 create 是首先不是保留字:

var obj = {
default: 1 // Reserved word as identifier
};

总而言之,您可以安全地忽略该警告,并且不必担心您的代码可能产生的任何潜在副作用。

关于javascript - 是否可以使用 "create"作为 JavaScript 对象文字中的属性名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29380397/

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