阅读 60

Object.create()和Object.defineProperties()Object.defineProperty()的用法

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 = '女'

复制代码
文章分类
前端
文章标签