对象字面量中的继承
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
的原型设置为任何值都没有任何价值,因为 Car
和 Car_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);
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
的原型设置为任何值都没有任何价值,因为 Car
和 Car_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);