我在这里看到两种原型继承函数创建模式。
Function.prototype.inherit = function( base ) {
function Meta() {};
Meta.prototype = base;
this.prototype = new Meta();
}
和
Function.prototype.inherit = function( base ) {
this.prototype = new base();
}
以前的实现似乎没有做任何额外的事情!中间有Meta函数,它的用例是什么?
答案 0 :(得分:1)
Meta
函数的要点是避免通过调用构造函数可能发生的副作用:
function Base() {
console.log("This should not be called when inheriting!");
}
// If you use `new Base()` as a prototype, an unwanted message is logged
在ES5中,它内置为Object.create
:
this.prototype = Object.create(base.prototype);
在ES6中,您只需使用a class:
class Derived extends Base {
// ...
}