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

后端 未结 2 1868
难免孤独
难免孤独 2021-01-12 09:14

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,         


        
相关标签:
2条回答
  • 2021-01-12 09:42

    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....);
    
    0 讨论(0)
  • 2021-01-12 10:04

    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 讨论(0)
提交回复
热议问题