新手问题 CoffeeScript:关于 class 中的 constructor《深入浅出 CoffeeScript》p56

douya0808 · May 06, 2013 · Last by krazy replied at May 07, 2013 · 3616 hits

p56 页写有一句话 "默认情况下,类的属性 (除了 constructor) 都会附加到原型上"

然后 p57 有一段关于 extends 的示例程序

class Pet
   constructor:->@isHungry=true
   eat:->@isHungry=false

class Dog extends Pet

dog=new Dog
console.log (Dog)

然后书上又说"Dog 继承了 Pet 的构造函数"

我的问题是,extends 本身就是原型继承,那如果 Pet 自己的原型中本身就没有 constructor,那 Dog 又是从哪继承来的构造函数呢? 然后我运行以上代码,输出的是{ isHungry: true },疑?还真继承了?那就是说 Pet 的原型中有 constructor?那岂不是和 p56 说的自相矛盾么?

请大哥们指点小弟

任何类都总是有 constructor 方法,所以当继承时,子类与父类分别都有一个 constructor 方法,当然 new( 实体化时) 运行的是两个不同的 构造方法,但子类会完全继承父类的其它方法,执行方法时运行的是相同的方法,除非你在子类覆写此方法

子类的 contructor 中直接调用其父类的构造函数

You need to Sign in before reply, if you don't have an account, please Sign up first.