ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js中的Object

2019-02-02 21:38:39  阅读:233  来源: 互联网

标签:false Object value js defineProperty var obj


js中的Object

  1. 浅克隆

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

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

    浅冻结,属性值不能修改,但是嵌套的引用类型不起作用
        Object.freeze(obj);
        obj.a = 11 // 修改属性无效
  4. seal

    密封对象,不能添加和删除属性
        Object.seal(obj);
        obj.d = 33; // 添加新属性无效
  5. 只读属性

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

    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. 不可重新配置属性

    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. 读取属性的配置信息

    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和set

    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);

标签:false,Object,value,js,defineProperty,var,obj
来源: https://www.cnblogs.com/ye-hcj/p/10349215.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有