Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:Object.defineProperty()和代理_Javascript_Object_Properties - Fatal编程技术网

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的用处。