JavaScript:字段或属性
Posted
技术标签:
【中文标题】JavaScript:字段或属性【英文标题】:JavaScript: fields or properties 【发布时间】:2011-06-19 19:55:32 【问题描述】:在我看过的每个 javascript 教程中,都提到了有关对象属性的内容。但是为什么他们称它为财产呢?例如构造函数属性,var a = functionthis.b
其中b
再次称为属性。据我所知,属性有 getter 和/或 setter,所以那些应该被称为字段,不是吗?
【问题讨论】:
【参考方案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】:就像hash
、map
、dictionary
和 associative array
;不同的语言喜欢称它们为不同的东西。术语(很遗憾)并非 100% 可在编程语言之间转移。
【讨论】:
属性允许您更改基础数据的设置和检索方式,而字段只是对象上的变量。由于 Object.defineProperty 允许您更改此行为,因此它们是属性。如果没有一种机制允许您更改数据的设置或检索方式,它们将是字段。以上是关于JavaScript:字段或属性的主要内容,如果未能解决你的问题,请参考以下文章