var Person = function (name) {
this.name = name;
}
Person.prototype = {
walk: function () {
alert(this.name + ' is walking');
}
}
var walter = new Person('Walter');
我会走路:
walter.walk() // => "Walter is walking"
我想知道人们是否会飞?程序员是上帝,我只想让人们能飞:
var WingedAnimal = function () {
this.hasWings = true;
}
WingedAnimal.prototype = {
fly: function () {
alert(this.name + ' is flying')
}
}
var Person = function (name) {
this.name = name;
}
Person.prototype = {
walk: function () {
alert(this.name + ' is walking');
},
prototype: new WingedAnimal()
}
var walter = new Person('Walter');
walter.walk() // => 'Walter is walking'
walter.fly();
TypeError:walter.fly()不是函数
好的,那么:
Person.prototype = {
walk: function () {
alert(this.name + ' is walking');
}
}
Person.prototype.prototype = new WingedAnimal();
var walter = new Person('Walter');
walter.walk() // => 'Walter is walking'
walter.fly();
TypeError:walter.fly()不是函数
真的没有办法吗?我的意思是,拥有一系列原型,而不是将多个对象混合到一个原型中?
为了澄清我的问题:
目前,我已经用一个我通常调用的函数解决了这个问题
混合
并放入一个通常称为
. 该函数复制它传递到第一个对象中的所有对象的成员。我的代码通常如下所示:
var Constructor = function () {
// stuff
}
CORE.mix(Constructor.prototype, SomeInterface, AnotherInterface, {
//stuff that goes only into objects made with Constructor
});
SomeInterface、AnotherInterface和object literal中的所有内容都会进入Constructor.prototype,优先级从右到左。然而,我认为Javascript不应该这样工作。我想,我应该有一系列的原型,而不仅仅是一个混入了很多东西的原型。
方法
this great explanation
. 我错了吗?是
每个对象的原型真的是我们所能使用的吗?