JS:Object.defineProperty() 和代理

JS: Object.defineProperty() and Proxy

提问人:SerG 提问时间:11/15/2019 最后编辑:SerG 更新时间:11/17/2021 访问量:915

问:

Object.defineProperty()Proxy 有什么区别? 在我看来,它们本质上的作用确实相同,仅对反应性、验证和默认值的实现有用。

因此,它看起来只提供了 Proxy 可用功能的子集。 当 Proxy 保持原点不变时更改原始对象。代理允许一次甚至提前设置所有设置(例如拦截成员,直到未创建)。代理还处理函数调用,并具有足够的能力来覆盖构造函数和删除运算符。definePropertydefineProperty

如果这是对的,也许我们不再需要了。defineProperty

JavaScript 对象 属性

评论

1赞 Sebastian Simon 11/15/2019
那么,如果我们确实需要改变原始对象怎么办?
0赞 SerG 11/15/2019
@SebastianSimon嗯,看起来像是原因。我只能找到微弱的论点:突变(状态变化)是一种不好的做法(作为古老的技术)
3赞 Bergi 11/15/2019
此外,一些预定属性的 getter/setter 比代理效率高得多。它们确实允许单独定义,而代理处理程序必须处理所有属性。
0赞 WeakPointer 7/14/2020
我喜欢这个问题。我有一个类似的。意识到我还没有完全理解defineProperty的用处。

答: 暂无答案