有点JS新手仍然存在,我试图理解使用原型和继承的最好/最干净的方法。在JS中编写原型继承的最干净的方法
通常我写对象/原型的定义是这样的:
var Foo = function(data) {
this.data = data;
};
Foo.prototype = {
someMethod: function() {
return "whatever";
}
};
我喜欢这个,因为我经常正在使用Namespace对象几层深,所以它实际上可能看起来更像是这样的:
App.Model.FooModel = function(){...};
App.Model.FooModel.prototype = {...};
这很好,因为我不必输入每个方法的全名来编写原型,只是名称,即。 someMethod: function(){}
而不是App.Model.FooModel.prototype.someMethod = function(){}
。
现在,我遇到的问题是我不知道如何做到这一点与继承在JS。我能得到继承工作正常,如果我不喜欢这样写道:
var Child = function(){...};
Child.prototype = new Parent;
Child.prototype.someMethod = function(){...};
...但现在在一个更复杂的应用程序,我们又回到写出对象的全名的每一个方法,我觉得这既乏味又难以阅读。
所以,我的问题是:是否有一种干净,直接的方式来编写从另一个对象继承的原型,除了使用对象的全名附加所有子方法?
谢谢!
'class'是一个保留字,虽然'Class'不是。 – 2013-03-20 02:57:43
@ gumballhead:谢谢,忘了那个。将类更改为构造函数(无论如何,因为它返回构造函数,所以更正确) – slebetman 2013-03-20 04:13:51
小心使用'函数构造函数',我相信你正在遮住'window.constructor' ...并不是必须的,但有人可以想象存储的东西在'window.constructor'中。也许动词'construct'会更合适。 – 2013-03-20 04:27:14