首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性属性“特性”在ECMAScript-5中的优势是什么?

属性属性“特性”在ECMAScript-5中的优势是什么?
EN

Stack Overflow用户
提问于 2013-04-29 12:04:57
回答 2查看 127关注 0票数 0

我想了解更多关于属性属性的用法,在这里描述:http://www.ecma-international.org/ecma-262/5.1/#sec-8.6.1

我可以想象这些属性的用法,但它们非常罕见。此外,默认情况下,可写、可枚举和可配置的属性设置为false,但大多数情况下,我希望拥有这些值true,因此必须设置它们。为什么在默认情况下它们是假的?

创建对象并设置它的属性对我来说是非常基本的事情。现在有了财产描述符,我可以把它描述为人为的,不自然的,复杂的或不舒服的。也许我只是错过了一些非常重要的东西。

所以我的问题是:属性的主要用途是什么?我们如何使用它们?

我可以避免使用属性描述符吗?例如,有一些很好的模式可以为我设置属性?--例如,如果我在第二个param "Properties“中使用Object.create,它会强制我使用属性描述符。所以我应该避免使用这个吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-29 12:52:39

"...mostly我希望这些值为真,所以我必须设置它们。“

除非你对他们有需要。如果没有,那么只需使用典型的对象字面语法,或者对新属性使用赋值操作符。

“为什么他们在默认情况下是假的?”

我可以想象这是因为已经有一种语法可以默认为true

"Make object并设置它的属性对我来说是非常基本的事情。现在有了属性描述符.“

什么都没变。它和以前一样基本。如果你需要的话,你只需要更多的工具。

"...which我可以形容为人造的,不自然的,复杂的或不舒服的。“

语法可能有点麻烦,但是如果您不喜欢它,就不要使用它。如果您需要将属性描述符设置为true以外的东西,那么我认为您会很高兴拥有新功能,而不管它的语法如何。

此外,在ECMAScript 6中,有可能将属性描述符定义添加到对象字面语法中。

“因此,我的问题是:财产属性的主要目的是什么。我们如何使用它们?”

这应该是不言自明的。它们用于手动配置对象上属性的configurablewriteableenumerable设置。如果你遇到需要这些设置之一的情况,你就会使用它们。

“我能避免使用属性描述符吗?”

当然了。再一次,一切都没有改变。如果你需要的话他们就在那里。如果你没有,那就忽略他们。

“例如,有一些好的模式可以为我设置属性吗?”

不确定您的意思,但是如果您想要不同的默认值,只需使用一个助手函数,例如:

代码语言:javascript
复制
function addWriteable(obj, prop, value) {
    return Object.defineProperty(obj, prop, {
        writeable: true
    });
}
票数 2
EN

Stack Overflow用户

发布于 2013-04-29 12:18:50

只有在以下情况下,可写性的缺省值为false

如果此规范未为命名属性显式指定属性值,则为

例如,对于手工定义的属性,它将是true。您应该注意的是,ecmascript本身在没有任何规范的情况下与javascript/jscript方言之间有着巨大的差异。

无论哪种方式,通常您都不应该使用这些属性属性做任何事情,除非您正在考虑创建一个框架或类似于这些属性的任何东西。例如,prototype.js可以使用它将Enumerable设置为false,我自己也使用它来重新定义Get,以允许开发人员更容易地使用(类似于不同的本机语法)的异域语法,但在执行正常操作时,您并不需要它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16278227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档