您的位置:首页 > Web前端 > JavaScript

JS面向对象——defineProperty设置属性方法的封装

2019-01-09 08:52 423 查看
版权声明:进击的葱 https://blog.csdn.net/qlwangcong518/article/details/86129820

描述:

JS面向对象——defineProperty方法的封装

描述:

/*

*   Object.defineProperty(目标对象,属性/方法,属性描述对象)
*   属性描述对象 Descriptor
*
*   configurable   是否该属性可删除
*   enumerable     是否该属性可遍历(是否可枚举)
*   writable      是否该属性可修改
*   value          设置该属性的值
*
*   访问器属性,如果使用访问器属性,不能设置writable和value值
*     设置setter函数,设置属性值的函数
*    set:function (value) {
this._a=value;
},
设置getter函数,获取属性值的函数
get:function () {
return this._a;
}
* */

代码:

[code]<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var obj = {
a: 1,
b: 2
}
Object.defineProperty(Object.prototype, "addKey", {
value: function (key, value, enumerable, writable, configurable) {
if (!enumerable) enumerable = false;
if (!writable) writable = false;
if (!configurable) configurable = false;
Object.defineProperty(this, key, {
value: value,
enumerable: enumerable,
writable: writable,
configurable: configurable
})
}
})
//测试数据
obj.addKey("c", 50, true, true);
console.log(obj);
obj.c = 60;
for (var key in obj) {
console.log(key, obj[key]);
}
</script>
</body>
</html>

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: