JavaScript无法引用此对象
我试图在我创建的对象中引用this.foo,但是这引用的是触发函数的HTML元素。当通过事件调用对象时,是否有任何方法可以在对象中保留对此的引用 下面是正在发生的事情的一个例子:JavaScript无法引用此对象,javascript,Javascript,我试图在我创建的对象中引用this.foo,但是这引用的是触发函数的HTML元素。当通过事件调用对象时,是否有任何方法可以在对象中保留对此的引用 下面是正在发生的事情的一个例子: $('document').on('click','button',object.action); var object = { foo : null, action : function(){ this.foo = "something"; } }; 我会收到的错误是 Uncaught Typ
$('document').on('click','button',object.action);
var object = {
foo : null,
action : function(){
this.foo = "something";
}
};
我会收到的错误是
Uncaught TypeError: Object #<HTMLInputElement> has no variable 'var'
uncaughttypeerror:对象#没有变量“var”
将this.var
更改为object.var
this
的问题涉及调用它的位置的上下文。
您可以通过单击按钮上的事件调用object.action
,因此这里就是
而且,正如前面所说的,不要使用像var
这样的保留字作为变量名如果您想保留此
,您可能应该像这样附加事件:
$('document')。在('click','button',function(){object.action()})上代码>
此外,如果您使用问题中显示的对象,您也可以使用对象
,而不是此
:
var object = {
foo : null,
action : function(){
object.foo = "something";
}
};
您可能还需要熟悉,并且-jQuery在幕后使用这些元素来用HTML元素替换您的this
另外,var
是一个保留关键字,您不应该将其用作属性名称;如果确实要这样做,请使用字符串“var”
,并通过[]
符号访问它,如下所示:
var a = {"var": 1}
a['var']
您可以使用以下方法将对象
作为此
值传递:
您的this
应该引用对象
,但这不太可能,因为在JavaScript中使用了var
,这是JavaScript中的一个保留字。varist在JavaScript中是保留字
这很好:
$(document).ready(function(){
var myObj = {
myVal: null,
action:function(){
this.myVal = "something";
}
};
myObj.action();
console.log(myObj.myVal);
}))
这里
我希望我能帮上忙。对不起,这只是一个演示我的问题的示例。在javascript中不能使用保留关键字var@Eric.K.Yung它不会的。@Juhana实际上在引用它之后会工作,因为它就像普通字符串一样使用:)var a={“var”:1};a['var']
我将var改为foo,这样我就可以得到真正的答案,而不是“var是一个保留关键字”的回答。很抱歉,沟通错误。这在低于9的IE中不起作用。请参阅底部的浏览器兼容性表。对于.bind()
,这是正确的,它只是作为参考,因为实际解决方案不涉及使用它。通过将函数调用包装到一个函数中,我可以在我的对象中调用this.foo。请注意,apply在此上下文中是多余的-对象。action()
就足够了,因为操作
是直接在对象literalright中定义的,这是多余的,我只是将其作为一个示例,说明如何解决此
未引用正确对象的任何问题。
$(document).ready(function(){
var myObj = {
myVal: null,
action:function(){
this.myVal = "something";
}
};
myObj.action();
console.log(myObj.myVal);