百度一下,你会发现很多博客文章都写了vue2和vue3的区别,问哪一个前端他都会告诉你:2是用defineProperty,而3是用Proxy啦,笨蛋。
当你用这个回答面试官的时候,面试官会不会问:能谈一下defineProperty和Proxy的区别嘛?
如果你没有准备,当遇到这个问题,恭喜,您凉了
那么,这个问题怎么解答呢?
首先,悟空,你看
new Proxy( data, {get(key) {}, set(key, value) {},})
Object.defineProperty(data, 'count', {get() {}, set() {},})
变换一下:
new Proxy( object, function)
Object.defineProperty(object, object.key,function)
很明显,Object.defineProperty的参数是比Proxy的参数多的。为什么呢?
这就可以得出一个结论:
Object.defineProperty监听对象属性。而Proxy监听的是整个对象
这个结论你可以在任何一篇讲vue2和3区别的文章里找到。结合上面的变换,应该是可以懂了。
为了避免有钻牛角尖的,还是讲一下我的理解把