标签:false Object value js defineProperty var obj
js中的Object
浅克隆
var obj = { a: 1, b: 2, c: 3 } 方式一: var o = Object.assign({}, obj); 方式二: var {...o} = obj;
深克隆
JSON.parse(JSON.stringify(obj))
freeze
浅冻结,属性值不能修改,但是嵌套的引用类型不起作用 Object.freeze(obj); obj.a = 11 // 修改属性无效
seal
密封对象,不能添加和删除属性 Object.seal(obj); obj.d = 33; // 添加新属性无效
只读属性
var obj = { a: 1, b: 2 } Object.defineProperty(obj, "c", {value: 3, writable: false}); obj.c = 4; // 无效 console.log(obj.c);
不可枚举属性
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 }
不可重新配置属性
var obj = { a: 1, b: 2 } Object.defineProperty(obj, "c", {value: 3, enumerable: false, configurable: false}); Object.defineProperty(obj, "c", {value: 3, enumerable: true}); // 报错
读取属性的配置信息
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 }
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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。