• 关于ES5内置函数Object的新方法--Object.create()


    在今天的学习中,更深层次的了解了一下ES5中内置函数Object的新方法Object.create(),觉得这个api功能真的十分强大,并且使用的场景也有很多,现和各位同行们分享学习成果,欢迎各位大佬们指正,废话不多说,开整…😊😊😊
    请添加图片描述

    1.🧋🧋什么是内置构造函数Object

    • Object是Object类型得构造函数,所以typeof Object返回得是Function

    在这里插入图片描述
    在这里插入图片描述

    • 而Object.prototype对象才是所有对象的父对象
    • Object作为构造函数,有三种情况
      • Object() 如果传入参数null,undefined,或者不传入,则相当于new Object(),创建有原型的空对象
      • Object(原始类型值) 将原始类型的值转化为Object类型,也等效于new Object(原型类型值)
      • Object(引用类型的对象) 什么都不做,还返回原对象

    【扩展】:object.prototype对象是所有对象的父对象,那么根据原型链的原理Object.prototype.__proto__,object.prototype就是原型链的顶端了吗?

    答案:当然不是喽,原型链的顶端是null,下面,我们在浏览器中来验证~~

    在这里插入图片描述
    内置函数Object中有很多的方法,下来我们着重介绍Object.create()

    2.🧋🧋 Object.create()

    • Object.create() 用于创建一个新对象
      • 新对象继承自指定的父级原型对象

      • 同时又扩展出多个自有属性

      • 语法

        • var newObj=Object.create(proto,{扩展属性对象})
        • 其中,{扩展属性对象}和defineProperties方法第二个参数完全一样
        • 强调:和defineProperties方法第二个参数一样,除value特性外的其余三个特性,默认都为false
        • 何时使用:今后只要基于一个已有的父对象,创建新对象,同时还可能扩展新对象的自由属性时,就要用Object.create方法
      • Object.create方法的特殊用法

        • 创建一个原型为null的空对象:var obj=Object.create(null)

        • 实现子类型构造函数的原型继承父类型构造函数的原型: Son.prototype=Object.create(Parent.prototype)

        • 创建普通空对象 等效于var obj={}:var obj=Object.create(Object.prototype)

        • 创建对象同时扩展自有属性

          
            var staff={name:"dema",age:28}
            var business=Obejct.create(staff,{
               eid:{
                 value:555,
                 writable:true,
                 enumerable:true
               }
            })
          
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
      • 案例

          ```javascript
            
           function Flyer(fname,speed){
              this.fname=fname;
              this.speed=speed
           }
        
           Flyer.prototype.fly=function(){
              console.log(`${this.name}以时速${this.speed}飞行`)
           }
        
           function Plane(fname,speed,capacity){
              Flyer.call(this,fname,speed)
              this.capacity=capacity
           }
        
           Plane.prototype=Object.create(Flyer.protoType)
           var b747=new Plane('B747',700,300)
           b747.fly()
           console.log(b747)
        
          ```
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
  • 相关阅读:
    单个vue页面 接收父页面参数的
    Talk预告 | Salesforce AI研究院研究科学家徐嘉诚:文本生成中的结构化解码
    淘宝/天猫API:img2text-图片识别商品接口
    5.SSH远程服务
    OA系统开发
    记一次生产环境死锁问题分析
    《向量数据库指南》——完善产品拼图,GBASE南大通用发布向量数据库
    [Mac软件]Infuse 7 PRO v7.6.3 一个强大的视频播放器(激活版)
    Python实现带图形界面的计算器
    NLP - monocleaner
  • 原文地址:https://blog.csdn.net/Code_King006/article/details/133220403