我寫了這個代碼,尚未設立任何真正的功能,我只是定義結構的Javascript不延長類正確
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();
富的
控制檯輸出;
Finder.constructor {constructor: function, registerEvents: function}
__proto__: Object
constructor: function() {
registerEvents: function() {
__proto__: Object
我的問題是,爲什麼當我實例化一個new ModelInput();
不會在不包含Finder();
的方法和屬性?
什麼是你到底想在這裏做什麼?你的代碼很混亂..你是否將Finder定義爲基類,然後將其擴展到ModelInput? –
請注意,即使您正確使用原型繼承,正如SergeS所建議的那樣,ModelInput將永遠不會包含Finder的方法,但ModelInput的原型Finder將擁有這些方法。如果你真的**進入'擴展'看看「僞古典繼承」 – semiomant
關於在堆棧溢出JS的繼承,只是搜索它有很多問題。你也會找到比你得到的更好的答案。 –