JavaScript无法引用此对象

JavaScript无法引用此对象,javascript,Javascript,我试图在我创建的对象中引用this.foo,但是这引用的是触发函数的HTML元素。当通过事件调用对象时,是否有任何方法可以在对象中保留对此的引用 下面是正在发生的事情的一个例子: $('document').on('click','button',object.action); var object = { foo : null, action : function(){ this.foo = "something"; } }; 我会收到的错误是 Uncaught Typ

我试图在我创建的对象中引用this.foo,但是这引用的是触发函数的HTML元素。当通过事件调用对象时,是否有任何方法可以在对象中保留对此的引用

下面是正在发生的事情的一个例子:

$('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);