对象文字内的继承

时间:2015-01-14 16:13:24

标签: javascript oop inheritance javascript-objects prototype-chain

 function Car(model, color, power){
    this.model = model;
    this.color = color;
    this.power = power;
    this.is_working = true;
    this.sound = function(){
        console.log("Vrummm!");
    };
}
 function Car_optionals(){
     this.turbo_boost = true;
     this.extra_horsepower = 20;
     this.name_tag = "Badass";
 }

Car.prototype = new Car_optionals();
var Audi = {};
Audi.prototype = new Car();
console.log(Audi.is_working);

所以我也有这个班级Car和Car_optionals,我希望新装箱的对象奥迪继承Car和Car_optionals课程中的礼仪。在对象文字中继承proprietyes和方法是否可行?

1 个答案:

答案 0 :(得分:0)

  

在对象文字中继承proprietyes和方法是否可行?

尚未,但使用ES6,这将是可能的:

var foo = {
    __proto__: bar
};

其中bar成为foo的原型。

但是,我认为你的意思是说是否可以用特定的原型创建对象。您可以使用Object.create

var foo = Object.create(bar);

或者,如果您已有现有对象,则可以使用Object.setPrototypeOf

foo.setPrototypeOf(bar);

在您的具体情况下,将Audi的原型设置为任何内容都没有价值,因为CarCar_optionals没有在prototype上定义任何内容对象。一切都在函数内部设置,因此您只需将这些函数应用于Audi

Car.call(Audi, 'A4', 'blue', 180);
Car_optionals.call(Audi);

通过Car创建新实例的方式更为自然:

var Audi = new Car('A4', 'blue', 180);
Car_optionals.call(Audi);