2010-02-14 9 views
8

Ich lerne Javascript So und alle seine Prototyp Güte, und ich bin über die folgenden stapfte:Wie erhalte ich eine Konstruktorfunktion, um von einer Konstruktorfunktion in Javascript zu erben?

Sagen, ich habe dieses

var Animal = function (a, b, c, d, e, f, g, h, i, j, k , l, m, n){ 
    this.a = a; 
    this.b = b; 
    //...etc... 
}; 

var x = new Animal(1,2,3....); 

Nun, wie kann ich eine Katze Konstruktorfunktion erstellen, die von erbt die Animal-Konstruktor-Funktion, so dass ich die super langen Argumente nicht erneut eingeben muss?

Mit anderen Worten: Ich will nicht, dies zu tun:

var Cat = function (a, b, c, d, e, f, g, h, i, j, k , l, m, n){ 
    this.a = a; 
    this.b = b; 
    //...etc... 
}; 

// inherit functions if any 
Cat.prototype = new Animal; 

var y = new Cat(1,2,3....); 

Vielen Dank im Voraus! j

Antwort

9

Wie ist das?

+0

„Argumente“ ist eine sehr leistungsfähige Variable, die automatisch im Rahmen eines Funktionsaufrufs ist ... hier für weitere Informationen: http://www.seifi.org/javascript/javascript-arguments.html –

+4

Yoo würde nicht einmal die Argumentliste (a, b, c und so weiter) in der Cat-Funktion deklarieren müssen. Argumente würden immer noch die Werte enthalten, die in dem neuen Cat-Aufruf (1,2,3 ...) gesendet wurden. –

+0

Danke Lars! Genau das habe ich gesucht. – John

1

Es wird schnell langweilig, sich an die Reihenfolge und Bedeutung langer Listen von Parametern wie dieser zu erinnern.

Sie können etwas Flexibilität hinzufügen, wenn Sie die Eigenschaften eines neuen Animals als Objekt übergeben - und es ist nicht so schwer, sich daran zu erinnern, wie eine lange Liste von Argument-Indizes.

function Animal(features){ 
for(var p in features){ 
    this[p]= features[p]; 
} 
}; 

You can give every cat some basic cat features automatically, 
and add specifics when you make a new cat. 

function Cat(features){ 
for(var p in features){ 
    this[p]= features[p]; 
} 
} 
Cat.prototype= new Animal({legs: 4, eats: 'meat', type: 'mammal', whiskers: true}); 
Cat.prototype.constructor=Cat; 

var Tiger= new Cat({tail: true, hunter: true}); 
Tiger begins with these properties: 

tail: true 
hunter: true 
legs: 4 
eats: meat 
type: mammal 
whiskers: true 
Verwandte Themen