如何理解类的__proto__

    class CoolArray extends Array {
      pishaaa() {
        this.push("aaa")
      }
    }

    var arr = new CoolArray

建立一个新的类,并实例化
图片描述

如何理解这2个_proto__
当我调用arr.push()这个方法的时候,是调用的Array上的方法还是CoolArray?

阅读 2.6k
5 个回答

这就是面向对象语言通用的父类和继承(扩展)的概念,所有子类没有的属性和方法会在父类或父类的父类。。。中查找。既然你这里没有覆盖对应的方法,那么自然调用的是父类的该方法

Array.protoType上的push,建议你先用es5的构造函数写一遍,然后再用es6的class.估计你就懂了.

你调用的方法先会查询当前实例上是否有对应的方法,如果有就直接调用;没有,就会沿着原型链一直往上找。

新手上路,请多包涵

同意二楼说法。chass是es6新增的类,建议选去学会es5中构造函数类继承的概念,可以看看《深入理解JS》

Array.prototype的push ,你自己构建的这个对象里面又没有 push 方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题