首页 > 其他 > 详细

Object的扩展 Object.create、Object.defineProperty、Object.defineProperties

时间:2021-07-16 15:45:29      阅读:27      评论:0      收藏:0      [点我收藏+]

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: "女"}

 

Object的扩展 Object.create、Object.defineProperty、Object.defineProperties

原文:https://www.cnblogs.com/yongzhu/p/15019344.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!