Javascript-Object.defineProperty的主要用例是什么?
作者:互联网
我已经阅读了Javascript教科书中的数据属性,并想象仅将Object.defineProperty与访问器属性结合使用.
用于设置属性的Object.defineProperty的其他主要用例是什么:[[Enumerable]],[[Writable]],[[Configurable]]?是否在框架中使用?出于什么原因?它用于客户端应用程序吗?
解决方法:
通常,Object.defineProperty可用于使用相关方法Object.getOwnPropertyNames()和Object.getOwnPropertyDescriptor()将属性描述符从一个对象复制到另一个对象,例如将东西合并成原型时.
正如您已经提到的,它们可以用于获取器和设置器.对象文字语法仅在创建新对象时有效.要在现有对象(例如原型)中创建新的getter / setter方法,您必须使用Object.defineProperty()或在描述符上进行复制,如上所述.
[[Enumerable]]
避免通过Object.keys()进行枚举,对于… in循环很有用,可将属性添加到数组子类等中.
在向内部原型(尤其是Object.prototype)中添加polyfill时,这一点非常重要,因为您不希望所添加的方法突然出现在循环中,因为这可能会破坏其他不执行.hasOwnProperty()检查的代码.
[[Writable]], [[Configurable]]
在启用新的编程样式方面,这些功能并不是真正的“有用”,但是它们是健全的功能,可让您创建只读属性,而这些属性不会被偶然覆盖或删除.是的,对图书馆来说很棒.
Object.freeze()/ .seal()/ .preventExtensions()进一步扩展了这种保护,以至于您可以通过保护内置对象的原型来充分保护对象以创建某种程度安全的javascript eval沙箱.
标签:ecmascript-5,javascript,object 来源: https://codeday.me/bug/20191120/2046486.html