【发布时间】:2014-06-06 16:11:32
【问题描述】:
我已经写了这段代码,还没有为任何真正的功能设置我只是定义一个结构
function Finder(d) {
this.ajax = {
current : null,
call : function(url,data) {
//Todo Ajax Code here
},
success : function() {
//Todo: Default Ajax Success Functiality
},
error : function(xhr, ajaxOptions, thrownError) {
//Todo: Default Ajax Failure Functionality
}
};
d.constructor.extend = function(def){
for (var k in d) {
if ( !def.hasOwnProperty(k)) {
def[k] = d[k];
}
return Finder(def);
}
}
return (d.constructor.prototype = d).constructor;
}
var ModelInput = Finder({
constructor: function() {
//Todo: Setup functionality
},
registerEvents : function() {
//Todo: Register Dom Events for ModelInput
}
});
var foo = new ModelInput();
foo 的控制台输出;
Finder.constructor {constructor: function, registerEvents: function}
__proto__: Object
constructor: function () {
registerEvents: function () {
__proto__: Object
我的问题是为什么当我实例化 new ModelInput(); 时不包含 Finder(); 的方法和属性?
【问题讨论】:
-
你到底想在这里做什么?您的代码非常混乱..您是否将 Finder 定义为基类,然后将其扩展为 ModelInput?
-
请注意,即使您正确使用原型继承,正如 SergeS 所建议的那样,ModelInput 永远不会包含 Finder 的方法,但 ModelInput 的原型 Finder 将具有方法。如果您真的喜欢
extends,请查看“伪经典继承” -
Stack Overflow上有很多关于JS继承的问题,随便搜一下。您还会找到比您在这里得到的更好的答案。
-
@semiomant 你指出了我正确的方向,非常感谢!
标签: javascript oop inheritance