【问题标题】:JavaScript: fields or propertiesJavaScript:字段或属性
【发布时间】:2011-06-19 19:55:32
【问题描述】:

在我看过的每个 JavaScript 教程中,都提到了有关对象属性的内容。但是为什么他们称它为财产呢?例如构造函数属性,var a = function{this.b} 其中b 再次称为属性。据我所知,属性有 getter 和/或 setter,所以那些应该被称为字段,不是吗?

【问题讨论】:

    标签: javascript properties field


    【解决方案1】:

    一些浏览器供应商已经为 JavaScript 属性实现了 getter/setter。

    FF 和 Webkit 为 DOM 对象实现了 __defineGetter____defineSetter__,并为不在 ECMA 规范之外的对象实现了获取和设置。然而,IE 8+ 都具有Object.defineProperty(来自 ECMA 规范)。阅读它here

    至于你原来的问题,我想说它在 JavaScript 中被称为属性的原因是它是一种动态语言,基本标记只使用属性和本地变量。由于所有内容都绑定到特定的范围层次结构,因此您所拥有的只是每个级别上的不同树分支。 Douglas Croockford 将它们命名为属性 :)

    【讨论】:

    • 好的。 10 倍。似乎有一些 getter 和 setter ECMA 8.6.1。
    • 在类字段声明 ECMAScript 提案(目前处于 TC39 流程的第 3 阶段)github.com/tc39/proposal-class-fields 中还提到了“字段”一词(以及“私有字段”)
    【解决方案2】:

    就像hashmapdictionaryassociative array;不同的语言喜欢称它们为不同的东西。术语(很遗憾)并非 100% 可在编程语言之间转移。

    【讨论】:

    • 属性允许您更改基础数据的设置和检索方式,而字段只是对象上的变量。由于 Object.defineProperty 允许您更改此行为,因此它们是属性。如果没有一种机制允许您更改数据的设置或检索方式,它们将是字段。
    猜你喜欢
    • 2012-06-05
    • 2013-05-20
    • 2013-05-12
    • 1970-01-01
    • 2017-02-21
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多