【发布时间】:2015-04-25 05:10:50
【问题描述】:
考虑到基本的使用场景,做
foo.bar = 'baz';
和
Object.defineProperty(foo, 'bar', {
value: 'baz',
configurable: true,
enumerable: true,
writable: true
});
在支持的浏览器中表现完全相同?
我们是否可以仅仅因为有利的语法而在 ES6 之前的应用程序中退回到 vanilla,或者将它们混合使用而没有任何副作用?
【问题讨论】:
-
你的问题最后有一个问号,但它不是一个真正的问题。你能改写一下这个问题吗?
-
当您在不使用defineProperty 的情况下定义属性时,obj.property = 'value' 和defineProperty 以及所有具有真值的描述符对象都是相同的。但是,当您更改描述符对象属性(如可配置、可枚举或可写)时,两者的声明都会有所不同。
-
在绝大多数情况下,它们的行为方式完全相同。但是,如果原型具有不同的属性描述符,则会出现边缘情况:Creating new objects from frozen parent objects
-
谢谢大家,先生们,这就是我想知道的。