理解了基本发展历史和深层原理,接下来就是生生不息的原因,继承部分啦。
我们知道JS是单继承的,Object.prototype是原型链的顶端,所有对象从它继承了包括toString等方法和属性。
Object本身是类当然也是构造函数,构造函数嘛当然是继承自Function.prototype
而Function也是对象,继承自Object.prototype。
这里就有一个鸡和蛋的问题:到底是先有Object还是先有Function。
1 | Object instanceof Function // true |
上篇中我们了解到原型链是实现继承的主要方法
1 | function SuperType() { |
回顾下new的作用
1 | var instance=new Person(); |
所以上文中重点new实现了如下:
1 | SubType.prototype.__proto__ = SuperType.prototype; |