0
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, и я хочу, чтобы вновь обретенный объект Audi наследовал приличия от классов Car и Car_optionals. Можно ли наследовать приличия и методы в объектных литералах?Наследование в пределах литералов объекта

ответ

0

Возможно ли наследовать приличия и методы внутри объектных литералов?

Пока нет, но с ES6, это будет возможно:

var foo = { 
    __proto__: bar 
}; 

где bar становится прототипом foo.

Однако, я скорее думаю, что вы имеете в виду, можно ли создавать объекты с определенным прототипом. Вы можете использовать Object.create для этого:

var foo = Object.create(bar); 

Или, если у вас есть уже существующий объект, вы можете использовать Object.setPrototypeOf:

foo.setPrototypeOf(bar); 

В вашем конкретном случае, хотя, нет никакого значения в создании прототипа Audi ничего, потому что Car и Car_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); 
+0

также вызов() будет делать трюк для меня. это то, что я искал. спасибо! –

Смежные вопросы