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/p/12736610.html