getter和setter以及defineProperty的用法
getter 和 setter 和 defineProperty
- getter:将对象属性绑定到查询该属性时将被调用的函数
- 说人话就是,当你调用一个getter属性时会调用定义好的get函数,这个函数会返回一些运算结果的值(一般是用其他属性作为运算值),这个值就作为你调用的这个属性的值。
- setter: 当尝试设置属性时,set语法将对象属性绑定到要调用的函数
- 说人话就是,当你设置一个setter属性的值时会调用定义好的set函数(可以传入参数),这个函数会将这个对象的其他属性设置为传入的参数计算过后的值。
- 使用defineProperty在现有对象上定义getter:
要随时将getter添加到现有对象上,使用Object.defineProperty()
const o = { a:0 }
Object.defineProperty(o, 'b', { get: function() {return this.a + 1}});
console.log(o.b) // Runs the getter, which yields a + 1(which is 1)
- 使用defineProperty为当前对象定义setter
const o = { a: 0 }
Object.defineProperty(o, 'b', {set: function(x) { this.a = x/2; }});
o.b = 10; // Runs the setter, which assigns 10 / 2 (5) to the 'a' property
console.log (o.a) // 5
赞 (0)