代码改变世界

ES5 Objece.creat实现继承

2016-04-19 10:25  孤独大兔子  阅读(365)  评论(0)    收藏  举报

Object.create() 

  Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不是一个子函数,可以传一个null,第二个参数是对象的属性描述符,这个参数是可选的。

例1:

var A=function(){
  this.blood="lee";
}
A.prototype.setI=function(){
  console.log( this.blood)
}

var a=new A();
var newa=Object.create(a);

newa.setI()        //newa拥有了A的原型方法

例2:

function Car (desc) {
    this.desc = desc;
    this.color = "red";
}
 
Car.prototype = {
    getInfo: function() {
      return 'A ' + this.color + ' ' + this.desc + '.';
    }
};

var car =  Object.create(Car.prototype);
car.color = "blue";     //改写
console.log(car.getInfo());    //结果为:A blue undefined.

 在不支持Object.create方法的浏览器中,则可以使用以下代码

Object.create = Object.create || function(obj){
  var F = function(){};
  F.prototype = obj;

  return new F();
}