比方说,我有一个函数/值的对象。我对基于调用行为的重载感兴趣。我可以用一个函数重载一个对象吗?
例如,下面这段代码演示了我想要做的事情。
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