JavaScript无法引用此对象

时间:2013-09-26 15:45:03

标签: javascript

我试图在我创建的对象中引用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' 

4 个答案:

答案 0 :(得分:2)

如果你想保留this,你应该附上你的事件:

$('document').on('click','button',function() { object.action() });

此外,如果您在问题中使用此对象,则也可以使用object代替this

var object = {
  foo : null,
  action : function(){
    object.foo = "something";
  }
};

此外,您可能希望熟悉BindCallApply - jQuery在幕后使用这些内容将您的this替换为HTML元素; < / p>

此外,var是保留关键字,您不应将其用作属性名称;如果你真的想这样做,请使用字符串"var"并通过[]表示法访问它:

var a = {"var": 1}
a['var']

答案 1 :(得分:0)

this.var更改为object.var

this引用调用位置的上下文的问题。 您可以点击按钮上的点击事件致电object.action,因此此处this#<HTMLInputElement>

而且,正如已经说过的那样,不要使用像var这样的保留字作为变量名

答案 2 :(得分:0)

您可以使用.apply()object作为this值传递:

$('document').on('click','button',function(){object.action.apply(object); });

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

您的this应该引用object,但这很可能是因为var在JavaScript中使用了reserved word

答案 3 :(得分:0)

JavaScript中的

var ist 保留字。

这很好用:

  $(document).ready(function(){

var myObj = {
  myVal: null,
  action:function(){
    this.myVal = "something"; 
  }

};
myObj.action();
console.log(myObj.myVal);

});

此处link to JS Bin

我希望我能提供帮助。