defineProperty高级应用
defineProperty高级应用
by kixi
CSS
/*
清晰网
kixi.com.cn
从javascript开始
*/
JavaScript
//有点复杂,比较少用到defineProperty
try {
var o = {};
Object.defineProperty(o, "attr", {
value: "这是利用defindProperty添加的新属性",
writable: false,
enumerable: true,
configurable: true
});
//匿名函数,注意变量的作用域
(function () {
var name = "清晰网kixi.com.cn";
//读写器
Object.defineProperty(o, "name", {
get: function () {
return name;
},
set: function (value) {
name = value + "!";
}
});
})();
alert(o.attr)
// 这是利用defindProperty添加的新属性
alert(o.name); // 清晰网
o.name = "ruby louvre";
alert(o.name); // ruby louvre
alert(Object.keys(o)) //attr
try {
o.attr = "试图重写该属性";
} catch (ee) {
alert("与writable: false冲突");
}
Object.defineProperty(o, "attr", {
writable: true,
configurable: false
});
o.attr = "再试尝试重写该属性";
alert(o.attr);
alert(delete o.attr); //false 与writable: false冲突
} catch (e) {
alert("你的游览器不支持Object.defineProperty ")
}