js中的Object

js中的Object

  1. 淺克隆this

    var obj = {
        a: 1,
        b: 2,
        c: 3
    }
    
    方式一:
        var o = Object.assign({}, obj);
    方式二:
        var {...o} = obj;
  2. 深克隆code

    JSON.parse(JSON.stringify(obj))
  3. freeze對象

    淺凍結,屬性值不能修改,可是嵌套的引用類型不起做用
        Object.freeze(obj);
        obj.a = 11 // 修改屬性無效
  4. sealip

    密封對象,不能添加和刪除屬性
        Object.seal(obj);
        obj.d = 33; // 添加新屬性無效
  5. 只讀屬性get

    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "c", {value: 3, writable: false});
    obj.c = 4; // 無效
    console.log(obj.c);
  6. 不可枚舉屬性string

    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "c", {value: 3, enumerable: false});
    
    for(let item in obj) {
        console.log(obj[item]); // 1 2
    }
  7. 不可從新配置屬性it

    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "c", {value: 3, enumerable: false, configurable: false});
    Object.defineProperty(obj, "c", {value: 3, enumerable: true}); // 報錯
  8. 讀取屬性的配置信息io

    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "c", {value: 3, enumerable: false, configurable: false});
    console.log(Object.getOwnPropertyDescriptor(obj, "c")); 
    輸出信息
        { 
            value: 3,
            writable: false,
            enumerable: false,
            configurable: false 
        }
  9. get和setconsole

    var obj = {
        a: 1,
        b: 2
    }
    Object.defineProperty(obj, "bb", {
        get: function() {
            console.log("取值");
            return this.b;
        },
        set: function(value) {
            console.log("賦值", value);
            this.b=value;
        }
    });
    
    obj.bb=1;  // 賦值 1
    console.log(obj.bb);
相關文章
相關標籤/搜索