咏竹莉
where there is a will,there is a way

1. Object.create(obj, [descriptors])

作用:  以指定对象为原型,创建新的对象。同时,第二个参数可以为新的对象添加新的属性,并对此属性进行描述。

举例:(没有第二个参数时)

    var obj1 = {username: 'smyhvae', age: 26};
    var obj2 = {address:'shenzhen'};

    obj2 = Object.create(obj1);
    console.log(obj2);

结果:

 

 

 

我们看到obj1成为了obj2的原型。  (注: obj2原先的属性好像被覆盖掉了)

 

举例2:(有第二个参数时)

第二个参数可以给新的对象添加新的属性

        let obj1 = {
            username: 'xiaozhu',
            age: 19
        }
        let obj2 = {
            address: 'shenzhen'
        }
        obj2 = Object.create(obj1, {
            sex: {
                value: '',     // 设置属性值
                writeable: false,  // 标记当前属性值是否可修改, 不写默认为false,不可修改
                configurable: true,  // 标识当前属性是否可以被删除,默认为false ,不可删除
                enumerable: true
            }
        })
        console.log(obj2)

 

 

2.  Object.defineProperty(obj, prop, descriptor) 

作用:  定义一个对象的新属性,或者修改一个对象已有的属性值,返回这个被处理过的对象。

参数说明:

1. obj:  必需,目标对象

2. prop: 必需, 需定义或修改的属性的名字

3. decriptor:  必需,目标属性所拥有的特性。

let obj6 = { name: 'xiaozhu' }
// 方法一  修改对象属性值
Object.defineProperty(obj6, 'name', {
    value: 'xioazhu1'
})
console.log(obj6);     // {name: "xioazhu1"} 修改了obj6的name值

// 方法二  为obj6添加新属性
Object.defineProperty(obj6, 'sex', {
    value: 19
})
console.log(obj6);    // {name: "xioazhu1", sex: 19}

 

3. Object.defineProperties(obj,  descriptors)

作用: 该方法与Object.defineProperty 相似,只不过该方法可以一次性操作多个属性

let obj7 = {
    name: 'xiaozhu'
}
Object.defineProperties(obj7, {
    'age': {
        value: 19
    },
    'sex': {
        value: ''
    }
})
// 为obj7 添加了两个属性 console.log(obj7);
// {name: "xiaozhu", age: 19, sex: "女"}

 

posted on 2021-07-16 11:34  咏竹莉  阅读(143)  评论(0)    收藏  举报