Object.defineProperty
语法 :Object.defineProperty(obj, prop, descriptor)
参数 :obj是对象,prop要定义或修改的属性(key)的名称或 Symbol ,descriptor定义或修改属性值的描述符
注意:使用set和get方法时,writable和value不可设置
var obj = {
age: "22",
};
Object.defineProperty(obj, "name", {
// 不可删除(不可修改属性),如果不设置时,默认值false,不可删除
configurable: true,
// 不可遍历属性(枚举属性),默认值是false,不可以枚举(不可以使用assign)
enumerable: true,
// 是否可修改属性,默认值是false,不可修改
// writable: true,
// value: "小米",
set: function (value) {
name = value;
console.log(name);
},
get: function () {
return name ? name : (name = "小明");
},
});
obj.name = "小米";
console.log(obj.name);//小米
console.log(obj);
##### 判断defineProperty的值是否可以枚举
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
const element = obj[key];
console.log(element);
}
}
hasOwnProperty的使用
语法:obj.hasOwnProperty(prop)
prop:要检测的属性,String 字符串类型的名称,用来判断某个对象是否含有该属性
返回值::布尔值 Boolean。有返回true,没有返回false
示例:
const object1 = {};
object1.property1 = 42;
console.log(object1.hasOwnProperty('property1'));
// expected output: true
console.log(object1.hasOwnProperty('toString'));
// expected output: false
console.log(object1.hasOwnProperty('hasOwnProperty'));
// expected output: false