Object.defineProperty使用
前言
简单记录一下 ES5 Object.defineProperty的使用
示例
const obj = {
name: "hello world",
age: 12
};
//对象已有的属性添加特性描述
Object.defineProperty(obj, "$name", {
// 属性默认都为false
configurable: false, // 是否可以重新设置特性或用delete删除
enumerable: true, // 是否可以被for of (in) 枚举
// value: 'xpp', // 不设置则为undefined
// writable: false, // 是否可以被重新 附给其它变量也会有这个属性
get:function (){ // 使用get set 时 不可以使用 value和writable
//当获取值的时候触发的函数
console.log('获取', obj.name);
return obj.name;
},
set:function (value){
//当设置值的时候触发的函数,设置的新值通过参数value拿到
console.log('设置$name为:', value);
obj.name = value;
}
});
// obj.name = 'xxx';
// console.log(obj.name);
let test = obj;
test.$name = 'xxx';
// for (let key in obj) {
// console.log(key);
// }
console.log(obj.$name);
console.log(obj);
console.log(test);
原博客链接:https://www.cnblogs.com/xpengp/