Javascript Object.defineProperty的主要用例是什么?

Javascript Object.defineProperty的主要用例是什么?,javascript,object,ecmascript-5,Javascript,Object,Ecmascript 5,我已经在Javascript教科书中读到了数据属性,并设想将对象.定义属性仅与访问器属性结合使用 Object.defineProperty设置属性的其他主要用例有哪些:[[Enumerable]],[[Writable]],[[Configurable]]?它在框架中使用吗?原因是什么?它是否用于客户端应用程序?对象。defineProperty通常用于使用相关方法将属性描述符从一个对象复制到另一个对象。例如,将对象合并到原型中时 正如您已经提到的,它们可以用于getter和setter。对象

我已经在Javascript教科书中读到了数据属性,并设想将
对象.定义属性
仅与访问器属性结合使用


Object.defineProperty设置属性的其他主要用例有哪些:
[[Enumerable]]
[[Writable]]
[[Configurable]]
?它在框架中使用吗?原因是什么?它是否用于客户端应用程序?

对象。defineProperty
通常用于使用相关方法将属性描述符从一个对象复制到另一个对象。例如,将对象合并到原型中时

正如您已经提到的,它们可以用于getter和setter。对象文字语法仅在创建新对象时有效。要在现有对象(例如原型)中创建新的getter/setter,您必须使用
object.defineProperty()
,或复制描述符,如上所述

[[可枚举]]

通过
Object.keys()
避免枚举非常有用,用于。。。在循环中,向数组子类添加属性等。 这在向内置原型添加多边形填充时非常重要,尤其是
对象.prototype
,因为您不希望添加的方法突然出现在循环中,因为它可能会破坏其他不进行
.hasOwnProperty()
检查的代码

[[可写]],[[可配置]]

从启用新的编程样式的意义上说,这些并不是真正的“有用”,但它们是健全的功能,允许您创建只读属性,而这些属性不能被意外覆盖或删除。所以是的,这对图书馆来说很好


Object.freeze()
/
.seal()
/
.preventExtensions()
进一步扩展这种保护,通过保护内置对象的原型,您可以充分保护对象,从而创建某种程度上安全的javascript eval沙盒。

通常非常有见地,涉及用例。主要用例是定义属性。您所说的“getter和setter在ES5中没有专用语法”?
freeze
/
seal
/
preventExtensions
也是。啊,对了,我在考虑方法速记声明。我会编辑它