ES5和ES6中的继承

看到一篇写的很是好的关于js继承的文章,其中对构造函数、原型、实例之间的关系的描述十分透彻,故转载做者文章以随时学习,并供你们共同进步!html

ES5

ES5中的继承,看图:web

 

 1 function Super() {}
 2  
 3 function Sub() {}
 4 Sub.prototype = new Super();
 5 Sub.prototype.constructor = Sub;
 6  
 7 var sub = new Sub();
 8  
 9 Sub.prototype.constructor === Sub; // ② true
10 sub.constructor === Sub; // ④ true
11 sub.__proto__ === Sub.prototype; // ⑤ true
12 Sub.prototype.__proto__ == Super.prototype; // ⑦ true

ES5中这种最简单的继承,实质上就是将子类的原型设置为父类的实例。函数

 

 

ES6

ES6中的继承,看图:学习

 1 class Super {}
 2  
 3 class Sub extends Super {}
 4  
 5 var sub = new Sub();
 6  
 7 Sub.prototype.constructor === Sub; // ② true
 8 sub.constructor === Sub; // ④ true
 9 sub.__proto__ === Sub.prototype; // ⑤ true
10 Sub.__proto__ === Super; // ⑥ true
11 Sub.prototype.__proto__ === Super.prototype; // ⑦ true

因此

ES6和ES5的继承是如出一辙的,只是多了class 和extends ,ES6的子类和父类,子类原型和父类原型,经过__proto__ 链接。ui

原文连接:ES5和ES6中的继承spa

感谢做者:@KeenWonprototype

相关文章
相关标签/搜索