把我想要的東西寫入文字是非常困難的,所以我寫了一個JS範例來幫助理解。如何擴展一個JavaScript原型對象兩次?
// create animal class
var animal = function(name) {
this.name = name;
};
animal.prototype.getSound = function() {
return this.sound === undefined ? 'nothing' : this.sound;
};
// create animal type classes
var dog = new animal("dog");
dog.prototype.sound = "woof";
var cat = new animal("cat");
dog.prototype.sound = "meow";
var worm = new animal("worm");
// create specific animals
var spot = new dog();
var mittens = new cat();
var squiggles = new worm();
我想創建一個JavaScript函數的實例和原型多次延長,這樣,在我的例子,具體的動物有方法及其屬一般動物王國兩者的性質。
不幸的是,它出現在第一個實例後,原型屬性不再存在。我不想繼續擴展它,以便主要原型具有所有動物的所有方法,蠕蟲和狗應該能夠擁有.dig()
,並且貓應該能夠擁有.climb()
而沒有其他類具有這些方法。
相反,我不想不斷地將方法重新綁定到每個實例。連指手套的貓應該與貓類具有相同的原型,並且應該具有與克魯克山貓完全相同的功能對象,而不需要做任何額外的分配工作。
我如何用我的例子來實現這個?
這是很難用語言來表達的原因,但儘量使用'Object.create' :http://jsfiddle.net/ykurmangaliyev/w8Lfyxtr/3/。 –
非常有趣。那個實例化另一個原型呢? – Josh
這兩篇文章可能會讓你感興趣:http://stackoverflow.com/questions/13040684/javascript-inheritance-object-create-vs-new和http://stackoverflow.com/questions/4166616/understanding-the-區別對象創建和新功能 –