JS中使用类的继承。
类Human{}类超级英雄扩展人类{}const superMan=新的超级英雄();
然而,如果我们想实现子类而不使用班
,我们可以执行以下操作:
功能人员(姓名、级别){this.name=名称;this.level=级别;}函数SuperHero(名称、级别){人名(this,name,level);}Object.setPrototypeOf(超级英雄原型,人类原型);//设置`SuperHero.Prototype的`[[原型]]``//到`Human.prototype`//设置原型继承链Human.prototype.speak=功能(){return`${this.name}打招呼。`;};SuperHero.prototype.fly=函数(){return`${this.name}正在飞行。`;};const superMan=新超级英雄(“克拉克·肯特”,1);console.log(superMan.fly());console.log(superMan.speak());
经典继承(带类)和伪经典继承(含构造函数)之间的相似性原型
属性)如上文所述继承链.
自函数构造函数原型
属性是可写的,您可以将其重新分配给使用创建的新对象对象.create()
以实现相同的继承链。使用时需要注意以下事项创建()
,例如记住重新添加建造师
属性。
在下面的示例中,它也使用类,超级英雄
被设定为继承自人类
不使用延伸
通过使用setPrototypeOf()
而不是。
警告:不建议使用setPrototypeOf()
而不是延伸
由于性能和可读性的原因。
类Human{}类超级英雄{}//设置实例属性Object.setPrototypeOf(超级英雄原型,人类原型);//连接静态属性Object.setPrototypeOf(SuperHero,Human);const superMan=新的超级英雄();
无子类延伸
在中提到ES-6分类.