寄生式担任同样适合主要存眷工具,而不在乎范例和结构函数的场景。
缺点:通过寄生式担任给工具添加函数会导致函数难以重用,与结构函数模式雷同
最常用的担任方法,也是最佳的,组合担任会挪用两次父类结构函数,存在效率问题。其实本质上子类原型最终是要包括父类工具的所有实例属性,子类结构函数只要在执行时重写本身的原型就行了。根基思路是不通过挪用父类结构函数给子类原型赋值,而是取得父类原型的一个副本。说到底就是利用寄生式担任来担任父类原型,然后将返回的新工具赋值给子类原型。
//焦点代码 function object(person) { function F(params) {} F.prototype = person return new F() } function inheritPrototype(SubType,SuperType) { let prototype = object(SuperType.prototype) //生成一个父类原型的副本 //重写这个实例的constructor prototype.constructor = SubType //将这个工具副本赋值给 子类的原型 SubType.prototype = prototype } function SuperType(name) { this.name = name; this.colors = ["red","blue","green"]; } SuperType.prototype.sayName = function() { console.log(this.name); }; function SubType(name, age) { SuperType.call(this, name); this.age = age; } //挪用inheritPrototype函数给子类原型赋值,修复了组合担任的问题 inheritPrototype(SubType, SuperType); SubType.prototype.sayAge = function() { console.log(this.age); };
总结到此这篇关于js担任的6种方法的文章就先容到这了,更多相关js担任方法内容请搜索剧本之家以前的文章或继承欣赏下面的相关文章但愿各人今后多多支持剧本之家!
您大概感乐趣的文章: