defineProperty
object.defineProperty()是用来控制一个对象属性的一些特有操作,比如读写权,是否可以枚举。例子:
var Book = {
}
var name = '';
Object.defineProperty(Book, 'name', {
set: function (value) {
name = value;
console.log('你取了一个书名叫做' + value);
},
get: function () {
return '《' + name + '》'
}
})
Book.name = 'vue权威指南'; // 你取了一个书名叫做vue权威指南
console.log(Book.name); // 《vue权威指南》
通过object.defineProperty()设置了对象book的name属性,对其get和set进行重写操作,set就是设置name属性时触发的函数,get就是在读取name属性这个值触发的函数,所以当执行book.name = 'value’时控制台就会打印出‘你取了一个书名叫做’,当读取这个属性时就会输出‘《vue权威指南》’因为在get函数里对该值进行了加工。