我从一个Base
类继承到Derived
这样的类:
说Base is View
和Derived is ItemVIew
function ItemView(){
View.call(this);
}
ItemView.prototype.__proto__ = View.prototype
以上能不能只用
Iteview.prototype = new View;
我还有另一个问题
当我设置ItemView.prototype.__proto__ = View.prototype
,ItemView
的原型是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)
。