我正在尝试做一些类似Javascript的多态对象,我有一个对象'类型'的映射,每个对象都有自己的属性和函数,我可以调用它们。为什么不能用Javascript创建对象并引用内部函数?
虽然属性正常工作的功能不,我不明白为什么。在Firefox中我得到的错误:类型错误:this.functionmap【类型】.action不是一个函数
这里是我的代码:
var object = {
flapWings : function(count) { alert("I am flapping my wings "+count+" times"); },
kick : function(count) { alert("I am kicking my legs "+count+" times"); },
functionmap : {
"bird" : { label : "Bird", action : this.flapWings },
"horse" : { label : "Horse", action : this.kick }
},
doAction : function (type, count) {
alert("I am a "+this.functionmap[type].label);
this.functionmap[type].action(count);
}
};
object.doAction("horse", 5);
这里的jsfiddle例如:
我只是不明白为什么: 行动:this.kick没有得到正确的上面创建的踢功能的引用!我想避免像行动一样愚蠢的东西:function(count):this.kick(count);即使这不起作用 - 我想直接引用,而不必重新键入参数
http://stackoverflow.com/questions/4616202/self-references-in-object-literal-declarations/10766107#10766107 – 2013-03-27 18:22:50
因为在你的榜样'这是指'马'引用的对象? – Daedalus 2013-03-27 18:22:50