Object.create()实现原型继承


大家都知道,在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()实现原型继承)