Object.create用法:
var obj = Object.create( prototype, [descriptors])
作用:以指定对象为原形创建新的对象, 为新的对象指定新的属性,并对属性进行描述。
obj2 = Object.create( obj1, {
name: {
value: 'A', //属性值
writable: false, //是否可被重写
configurable: false, //是否可删除当前属性
enumerable: false //是否可被枚举(可以获取原型上的属性)
})
Object.defineProperties用法:
向对象添加属性
var obj2 = {
name: 'B',
age: 22
}
var sex = null;
Object.defineProperties(obj2, {
sex: {
get: function() {
return sex;
}
set:function(value) {
//不能在这里使用 this.sex = value; 会死循环
sex = value;
}
})
obj2.sex = '女';
当对象值被获取扩展属性值时才调用get函数。 当被重新赋值时才调用set函数,并且此时set函数的this为对象本身
Object.defineProperty用法:
var sex = null;
OBject.defineProperty(obj3, 'sex', {
get: function() { //设置值,当获取扩展属性时自动被调用
return sex;
}
set: function(value) { //监视扩展属性的变化 当修改扩展属性时自动被调用
sex = value
}
})
obj3.sex = '女';
对象本身的方法:
var obj4 = {
name: 'C',
age: 42,
get sex() {
return '男'
},
set sex(value) {
console.log(value);
}
};
console.log(obj4.sex);
obj4.sex = '女'