设置构造函数原型的__proto__



我从一个Base类继承到Derived这样的类:

Base is ViewDerived is ItemVIew

function ItemView(){
View.call(this);
}
ItemView.prototype.__proto__ = View.prototype 

以上能不能只用

Iteview.prototype = new View;

我还有另一个问题

当我设置ItemView.prototype.__proto__ = View.prototypeItemView的原型是Function.prototype这意味着我正在设置Function.prototype.__proto__ = View.prototype所以View.prototype的所有方法都被我定义的所有其他构造函数继承

我可以通过ItemView.__proto__ = View.prototype来解决吗?

哪种推荐

的扩展基类(如视图)的方法,以便 ItemView 仍然是构造函数?

ItemView.prototype引用的对象将被分配为通过 new ItemView 创建的对象的底层原型。 ItemView.prototype.__proto__很可能(在具有它的实现上)是Object.prototype .

但是不,你不想做ItemView.prototype = new View(); - 如果View需要论据怎么办?这是一个非常常见的错误。

相反,在 ES5 之前的环境中:

function Temp() {
}
Temp.prototype = View.prototype;
ItemView.prototype = new Temp();
ItemView.prototype.constructor = ItemView;

在 ES5 环境中:

ItemView.prototype = Object.create(View.prototype);
ItemView.prototype.constructor = ItemView;

。并继续从ItemView内部做你的View.call(this)

最新更新