这章的面向对象继承那儿感觉是有点问题,我不是特别懂js的面向对象,说说我的疑惑~
Animal类的定义,dog = new Animal(‘dog’), monkey = new Animal(‘moneky’)只是实例化,不存在继承的哦,从始至终都只有Animal一个类,实例化dog,monkey对象,两个对象都应该有自己的eat方法,dog吃肉,monkey吃香蕉,因为是两个对象啊,又没有定义两个类,继承怎么存在哦?
如果把eat方法挂在原型对象上,可不可以理解为相当于把方法放在Animal类的父类上了,这算是Animal类继承了父类上的eat方法,于是dog,monkey对象实例化后也拥有了父类的方法,这里按照一般面向对象来说跟eat方法定义在Animal类里差不多啊,但是js这里挂在原型链上的,所以是共有的,这可能是js特有的。而且JS居然可以动态修改类的方法。类不是只能定义好,或者继承后重写么?
其他语言,创建Animal类,然后实例化对象,每个对象里的方法都是独立的,没毛病哦~。视频里9分钟说的“父类的eat方法如果修改后,所有实例对象都应该跟着改变”。。。有点懵,对象不都已经初始化完了么,修改类有啥用。如果动态修改类方法了,之后再实例化对象,那么再实例化的对象改变才对。
反正学了这节课我好懵~~~哈哈哈~
如果我说的错了,那我下去了再好好去学习哈面向对象 -。-,