关于Object.create()和它的参数

Object.create()

  • 根据现有对象创建新对象

  • 可以实现继承

  • 使用Object.getPrototypeOf()来获取指定对象的原型对象

    let obj = {
      name: 'sun',
      age: 24,
    }
    
    // 可以看到name属性其实不是newObj自身原有的,而是继承而来
    let newObj = Object.create(obj)  // {}
    console.log(newObj.name) // sun
    
    // obj就是newObj的原型对象
    newObj._proto_ === obj // true
    
    // 使用Object.getPrototypeOf()来获取指定对象的原型对象
    Object.getPrototypeOf(newObj) // {name: "sun", age: 24} // obj
    

A) Object.create()的参数

Object.create() 方法创建一个拥有指定原型和若干个指定属性的对象。
语法
Object.create(proto, descriptors )

  • 第一个参数:新对象的原型对象
  • 第二个参数:新对象指定的属性,是一个对象形式的配置
    • value: 属性的默认值, 默认为undefined
    • congigurable: 能否使用delete、能否修改属性特性、或能否修改访问器属性、false为不可重新定义,默认值为true
    • enumberable: 可枚举性,对象属性能否通过for-in 循环,默认为true
    • writable: 对象属性是否可修改,默认为true,可修改,设置false可理解为常量不可修改
    let newObj = Object.create(
     {name:'sun'},
     {
       age: {
         value: 24, // 属性默认值
         congigurable: false, // 设置false之后将不能不删除
         enumerable: true,
         writable: false,  // 设置false之后将不能修改
       }
     }
    )
    
    console.log(newObj)  // {age: 24}
    console.log(newObj.name)    //  sun // 继承而来
    
    // newObj的age属性设置了congigurable: false, // 设置false之后将不能不删除
    delete newObj.age // false // 浏览器控制台输出false 删除失败
    cobnsole.log(newObj.age) // 24 仍然可以使用
    
    // newObj的age属性设置了wrirable: false, // 设置false之后将不能不修改
    newObj.age = 25
    cobnsole.log(newObj.age) // 24 仍然是24 // 没有修改
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值