Loading... Vue是采用数据劫持结合发布/订阅模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。 ### 什么是Object.defineProperty() ? 定义对象可以使用构造函数或字面量的形式: let obj = new Object();//let obj = {}; 此外还可以使用Object.defineProperty定义新属性或修改原有的属性 **用法:** `Object.defineProperty(obj, prop, descriptor)` **参数:** **`obj:`** 必需。目标对象; **`prop:`** 必需。需定义或修改的属性的名字; **`descriptor:`** 必需。目标属性所拥有的特性; 代码如下: ``` let obj={}; Object.defineProperty(obj,"name",{ get:function(){ console.log("get获取"); return value; }, set:function(newObj){ console.log("set设置"); } }) // 获取obj的name属性时,触发get方法 var value = obj.name; // 给obj设置属性时,触发set方法 obj.name = "张三"; ``` 最后修改:2022 年 06 月 25 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏