语法
Object.defineProperty(obj, prop, descriptor)
参数
obj
要在其上定义属性的对象。prop
要定义或修改的属性的名称。descriptor
将被定义或修改的属性描述符。
返回值
被传递给函数的对象。
示例
var person= {}; Object.defineProperty(person, "name", { value: '名字' }) console.log(person.name); // 名字
双向绑定 set 和 get
var person = {};
Object.defineProperty(person, 'name', {
set: function(newValue) {
console.log('赋值操作, 赋值' + newValue);
},
get: function() {
console.log('取值操作');
return 2;
}
});
a.name = 'TRE'; // 赋值操作,赋值TRE
a.name; // 取值操作TRE
Object对象有一个freeze的方法,用于实现对象属性和方法的不可更改
// 使用方法:
const arr = [1,2,3,4];
Object.freeze(arr); // 变量arr不可更改
arr.push(5); // 报错:不能添加属性
Object.definePropperty也可以实现规定变量的不可更改
const obj = { key: 'chris', vlaue: 'person' };
Object.defineProperty(obj, 'key', {
configurable: false, // 不可删除
writable: false, // 不可写
});
注:在 descriptor 中不能同时设置访问器(get 和 set)和 wriable 或 value,否则会错,就是说想用 get 和 set,就不能用 writable 或 value 中的任何一个。
本文链接地址: Object.defineProperty 实现双向数据绑定