Javascript:什么是多级原型层次结构以及为什么我们应该避免它

N. *_*. P 1 javascript coding-style prototype-programming

谷歌Javascript编码指南中,它说我们不应该使用多级原型层次结构,因为"这些层次结构比它们最初出现时要难得多!".实际上我没有明白这意味着什么.我在哪里可以找到一个很好的例子来解释它的用法并说明它的不良影响?

Šim*_*das 5

这是两级继承的示例:

// 1. level constructor
var Dog = function ( name ) {
    this.name = name;
};

Dog.prototype.bark = function () { /* ... */ };

// 2. level constructor
var TrainedDog = function ( name, level ) {
    Dog.apply( this, arguments ); // calling the super constructor
    this.level = level;
};

// set up two-level inheritance
TrainedDog.prototype = Object.create( Dog.prototype );
TrainedDog.prototype.constructor = TrainedDog;

TrainedDog.prototype.rollOver = function () { /* ... */ };

// instances
var dog1 = new Dog( 'Rex' );
var dog2 = new TrainedDog( 'Rock', 3 );
Run Code Online (Sandbox Code Playgroud)

这里,从原型dog1继承bark方法Dog,并dog2继承该方法(来自Dog原型)和原型中的rollOver方法TrainedDog.