Javascript JS:Object.defineProperty()和代理
和之间有什么区别? 在我看来,它们本质上是一样的,只对反应性、验证和默认的实现有用 因此,看起来Javascript JS:Object.defineProperty()和代理,javascript,object,properties,Javascript,Object,Properties,和之间有什么区别? 在我看来,它们本质上是一样的,只对反应性、验证和默认的实现有用 因此,看起来defineProperty只提供了代理可用功能的子集。 defineProperty在代理保留原始对象不变时更改原始对象。代理允许一次甚至提前设置所有内容(如截取尚未创建的成员)。代理还处理函数调用,并有足够的能力覆盖构造函数和删除运算符 如果它是正确的,也许我们不再需要定义属性了。那么,如果我们真的需要改变原始对象呢?@SebastianSimon-hm,这似乎就是原因。我只能找到微弱的论点:突变
defineProperty
只提供了代理可用功能的子集。
defineProperty
在代理保留原始对象不变时更改原始对象。代理允许一次甚至提前设置所有内容(如截取尚未创建的成员)。代理还处理函数调用,并有足够的能力覆盖构造函数和删除运算符
如果它是正确的,也许我们不再需要定义属性了。那么,如果我们真的需要改变原始对象呢?@SebastianSimon-hm,这似乎就是原因。我只能找到微弱的论点:突变(状态改变)是一种糟糕的做法(就像古老的技术一样),而且一些预定属性的getter/setter比代理更有效。它们允许单独定义,而代理处理程序必须处理所有属性。我喜欢这个问题。我有一个类似的。意识到我还没有完全理解defineProperty的用处。