一、区别
ES5 的继承,实质是先创造子类的实例对象,然后将再将父类的方法添加到 this 上。 ES6 的继承,先创造父类的实例对象(所以必须先调用 super 方法,然后再用子类的构造函数修改 this
二、代码实现
1 function Super(foo) { 2 this.foo = foo; 3 } 4 Super.prototype.printFoo = function () { 5 console.log(this.foo); 6 }; 7 function Sub(bar) { 8 this.bar = bar; 9 // 调用父类的构造函数 10 Super.call(this); 11 } 12 // 将子类是原型绑定在父类原型的复制对象上,之后修改子类原型就不会影响父类原型 13 Sub.prototype = Object.create(Super.prototype); 14 // 让子类原型的构造函数指向子类构造函数 15 Sub.prototype.constructor = Sub;
1 class Super { 2 constructor(foo) { 3 this.foo = foo; 4 } 5 printFoo() { 6 console.log(this.foo); 7 } 8 } 9 class Sub extends Super { 10 constructor(foo, bar) { 11 Super(foo);//注意子类必须要有super()函数 12 this.bar = bar; 13 } 14 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。