我在javascript中有一个带有函数的类:
function myClass()
{
this.myInit = function()
{
myObj = this;
var id-foo = 'myId';
jQuery('#'+id-foo).bind('click', function() { myObj.foo(id-foo); } );
}
this.foo = function(id) { alert(id); }
}
我想将DOM元素绑定到一个事件(click,dragonstart等)并使其调用当前对象的函数(实际上是这个)。我试图直接调用this.foo但是没有用,firebug告诉我foo不是函数。我给匿名函数的参数id-foo是问题吗? Thx提前
答案 0 :(得分:3)
你的问题在这里:
var id-foo = 'myId';
这不是变量的有效名称。
另请注意,如果您未在myInit
的实例上调用myClass
函数,则代码将无效。
例如,这不起作用:
var obj = new myClass();
var f = obj.myInit;
f();
虽然这个应该有效:
var obj = new myClass();
obj.myInit();
答案 1 :(得分:0)
在关注@ dystroy的答案之后,我建议您不要将自己与this
关键字混淆。遵循这种模式
var myClass = function () {
myInit: function()
{
myObj = this;
var id_foo = 'myId';
jQuery('#'+id_foo).bind('click', function() { myObj.foo(id_foo); } );
}
foo: function(id) { alert(id); }
}