开发者

How to get a constructor function to inherit from a constructor function in Javascript?

开发者 https://www.devze.com 2022-12-20 07:51 出处:网络
So I\'m learning Javascript and all its\' prototype goodness, and I am stumped over the following: Say I have this

So I'm learning Javascript and all its' prototype goodness, and I am stumped over the following:

Say I have this

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....);

Now how do I create a Cat constructor function that inherits from the Animal constructor function such that I don't have to type the super long arguments again?

In other words I don't want to be doing this:

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....);

Thanks in advance! j


How's this?

var Cat = Function (a, b, c, d, e, f, g, h, i, j, k , l, m, n){
   Animal.apply(this, arguments);
};

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

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


It quickly becomes tedious to remember the order and meaning of long lists of parameters like this.

You can add some flexibility if you pass the properties of a new Animal as an object- and it is not so hard to remember as a long list of argument indexes.

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
0

精彩评论

暂无评论...
验证码 换一张
取 消