请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

面向对象~懵

这章的面向对象继承那儿感觉是有点问题,我不是特别懂js的面向对象,说说我的疑惑~

  1. Animal类的定义,dog = new Animal(‘dog’), monkey = new Animal(‘moneky’)只是实例化,不存在继承的哦,从始至终都只有Animal一个类,实例化dog,monkey对象,两个对象都应该有自己的eat方法,dog吃肉,monkey吃香蕉,因为是两个对象啊,又没有定义两个类,继承怎么存在哦?

  2. 如果把eat方法挂在原型对象上,可不可以理解为相当于把方法放在Animal类的父类上了,这算是Animal类继承了父类上的eat方法,于是dog,monkey对象实例化后也拥有了父类的方法,这里按照一般面向对象来说跟eat方法定义在Animal类里差不多啊,但是js这里挂在原型链上的,所以是共有的,这可能是js特有的。而且JS居然可以动态修改类的方法。类不是只能定义好,或者继承后重写么?

  3. 其他语言,创建Animal类,然后实例化对象,每个对象里的方法都是独立的,没毛病哦~。视频里9分钟说的“父类的eat方法如果修改后,所有实例对象都应该跟着改变”。。。有点懵,对象不都已经初始化完了么,修改类有啥用。如果动态修改类方法了,之后再实例化对象,那么再实例化的对象改变才对。

反正学了这节课我好懵~~~哈哈哈~
如果我说的错了,那我下去了再好好去学习哈面向对象 -。-,

正在回答

1回答

1、dog 和 monkey 都是 Animal 的实例,咩有继承呀!

2、prototype 是所有实例共享的一个对象,如果写在 Animal 类里面,每个 eat 方法都会拷贝一份在实例里

3、基于prototype的继承,实例共享,因此在prototype的方法改变,其他实例依然会跟着改变

0 回复 有任何疑惑可以回复我~
  • 提问者 爱吃apple的阿狸 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-02-13 15:41:24
  • 提问者 爱吃apple的阿狸 #2
    这两天看了许多资料,明白了JS的面向对象特殊性,谢谢~
    回复 有任何疑惑可以回复我~ 2020-02-13 15:42:11
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信