美文网首页
Object.create()实现原型继承

Object.create()实现原型继承

作者: _刘小刘 | 来源:发表于2018-12-19 14:25 被阅读0次

    大家都知道,在js原型继承中,不赞成直接用Obj.__ proto __ 去改变一个原型
    __ proto __ 低版本IE 无法使用
    其实Object.create()也可以起到原型继承的作用

    Object.create(obj_proto , prototObject) 是在 ES5中提出的一种新的对象创建方式.
    它一共有两个参数,
    第一个参数: 新创建对象的原型
    第二个参数; 一组参数对象的属性和值,一般不用写.


    先上一个 __ proto__继承的demo:

    var student = {
           name:" 秦司令",
           height:" 1.78m ",
            run:function (){
              alert(this.name + " ......敲代码ing ")
            }
    }
    var anther_student = {
          name:" 会PHP的FE "
    }
    anther_student.__proto__ = student   // 把anther_student 的 __proto__指向student
    anther_student.run() // 会PHP的FE.......敲代码ing
    

    这就是一个简单的原型继承,起初anther_student不存在 run() 这个方法,但是

    anther_student.__proto__ = student 
    

    这句话将anther_student的原型指向了student , anther_student在 student 上继承了run()方法 ,
    原型继承我们也可以用Object.create()实现


    Object.create() 方法可以传入一个原型对象,并且创建一个基于该原型的新对象.
    来个Object.create() 小demo

    var student = {
         name:" 秦司令",
         height:" 1.78m ",
         run:function (){
             alert(this.name + " ......敲代码ing ")
         }
    }
    function createStudent(){
        var other_student = Object.create(student) // 基于student的原型创建一个新对象
            other_student.name = '会PHP的FE' //新对象name赋值
              return other_student
    }
    var receive_student = new createStudent()
          receive_student.run() // 会PHP的FE.....敲代码ing
    

    这样,Object.create() 就实现了一个简单的原型继承.

    初学前端 , 望大牛指点问题

    相关文章

      网友评论

          本文标题:Object.create()实现原型继承

          本文链接:https://www.haomeiwen.com/subject/gbfrzftx.html