object.defineproperty和{}的区别
2018-07-04 本文已影响0人
开船的
var o = {};
o.a = 1;
// 等同于 :Object.defineProperty(o, "a", {
value : 1,
writable : true,
configurable : true,
enumerable : true});
// 另一方面,
Object.defineProperty(o, "a", { value : 1 });
// 等同于 :Object.defineProperty(o, "a", {
value : 1,
writable : false,
configurable : false,
enumerable : false});
属性特性 enumerable 定义了对象的属性是否可以在 for…in 循环和 Object.keys() 中被枚举。如果设置false,在循环中该属性将不被取到。
configurable 特性表示对象的属性是否可以被删除即:delete o.a无效,以及除 writable 特性外的其他特性是否可以被修改,即:o.a=7无效。