大家都知道,在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() 就实现了一个简单的原型继承.