在学习Vue的时候咱们知道它的响应式数据原理就是经过Object.defineProperty进行重写定义的,主要是利用get和set属性访问器实现的,接下来看看get和set属性访问器的实现原理java
js容许在运行时向对象添加状态,而且能够添加行为。为了提升抽象能力,js的属性被设计成了更加复杂的形式,它提提供了两类属性getter/setter,做为其数据属性和访问器属性。也能够简单的理解为,getter 是一种得到属性值的方法,setter是一种设置属性值的方法。函数
class Person { constructor(name,age) { this.name = name; this.age = age; } set name(name) { console.log("setter"); this.name = name; } get name() { console.log("getter"); return this.name; } }
Object.defineProperty(obj,prop, descriptor)学习
参数:this
可供定义的特性列表:spa
var lost = { loc : "Island" }; Object.defineProperty(lost, "location", { get : function () { return this.loc; }, set : function (val) { this.loc = val; } });