对象字面量中的继承

Inheritance within object literals

 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 我希望新创建的对象 Audi 继承 Car 和 Car_optionals 类 的属性。可以在对象字面量中继承属性和方法吗?

It is posible to inherit proprietyes and methods within object literals?

还没有,但是有了 ES6,这将成为可能:

var foo = {
    __proto__: bar
};

其中 bar 成为 foo 的原型。

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

var foo = Object.create(bar);

或者如果你有一个已经存在的对象,你可以使用 Object.setPrototypeOf:

foo.setPrototypeOf(bar);

不过,在您的具体情况下,将 Audi 的原型设置为任何值都没有任何价值,因为 CarCar_optionals 未在其 [=22] 上定义任何内容=] 对象。一切都在函数本身内部设置,因此您只需将这些函数应用于 Audi:

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

更自然的方法是通过 Car:

创建一个新实例
var Audi = new Car('A4', 'blue', 180);
Car_optionals.call(Audi);