Причина, по которой это не работает, заключается в том, что this
в контексте call:this.f1
фактически ссылается на window
и , а не thing
.
this
ссылается только на thing
из внутри thing
функций-членов.
Следующие будут работать , однако:
var thing = { //watch out for semicolon insertion...
f1 : function() {alert(1);},
f2 : function() {alert(2);},
setF1 : function() {this.call = this.f1;},
setF2 : function() {this.call = this.f2;},
set: function(index){ this.call=this.list[index]; },
call : function() {
this.f1();
}
};
thing.list = [thing.f1, thing.f2];