概述
JS本身是没有类的概念的,有的只是原型链。
当调用对象属性时,会从对象本身查找,如果查找不到就通过__proto__属性向该对象原型上查找。
如此返回,直至查询到Object的原型
按照这种规则,我们就可以实现继承操作
按照规范,不要使用
__proto__属性查找对象的原型,统一使用Object.getPrototypeOf()
原型链最顶层是Null
Object.getPrototypeOf(Object.getPrototypeOf(new Object()))
// null
构造函数的构造函数就是Function,这样操作无意义。
Function.constructor === Function
// true
继承的具体实现
要实现继承首先要满足 子类 继承 父类 的属性和方法
关于具体实现,请点击跳转
学习总结:
-
非构造继承不适用,会出现很多问题。请忽略非构造继承篇
-
目前唯一正确标准的继承实现是使用Object.create()方式的继承
-
各种实现方法都有优缺点
具体优缺点,请参考【JS实现继承的几种方式】
-
Object.create()的实现方式Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); }; -
为了代码可读性,请使用ES6的class操作符写法!!!!