标签:ring pre als table rop 读取 不能 枚举 class
浅克隆
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);
标签:ring pre als table rop 读取 不能 枚举 class
原文地址:https://www.cnblogs.com/ye-hcj/p/10349215.html