比方說,我有一個函數/值的對象。我對基於調用行爲的重載感興趣。我可以用一個函數重載一個對象嗎?
例如,下面這段代碼演示了我想要做的事情。
var main_thing = {
initalized: false,
something: "Hallo, welt!",
something_else: [123,456,789],
load: {
sub1 : function() {
//Some stuff
},
sub2 : function() {
//Some stuff
},
all : function() {
this.sub1();
this.sub2();
}
}
init: function() {
this.initalized=true;
this.something="Hello, world!";
this.something_else = [0,0,0];
this.load(); //I want this to call this.load.all() instead.
}
}
這個問題對我來說是main_thing.load
被分配到一個對象,並呼籲main_thing.load.all()
會調用該對象(()
運營商)的內部功能。我能做些什麼來設置我的代碼,以便我可以使用main_thing.load
作爲訪問對象,並且main_thing.load()
執行一些代碼?或者至少,類似的行爲。
基本上,這與其他語言中不需要調用main_thing.constructor()的默認構造函數類似。
如果這是不可能的,請詳細解釋一下。
你描述聽起來像一個構造函數,但你將其形容爲超載。我在這裏看不到任何重載函數。 – 2011-02-09 15:21:50
函數是對象,因此您可以將「子函數」設置爲函數的屬性。在`main_thing.load.all`中順便說一下`this`並不是指`main_thing`,而是指向`main_thing.load`。 – 2011-02-09 15:23:57
我可能會誤解 - 但如果你添加一個var loadfunctions = {sub1:function(){..},sub2 ...},然後重寫你的負載到類似load:function(switch){if(!開關){loadfunctions.all; }其他...等 – Prescott 2011-02-09 15:28:45