如何在javascript中创建函数的实例?

时间:2014-06-24 12:45:12

标签: javascript

我试图向对象添加一个事件监听器,例如:

this.startLoading = function(){
     this.a.addEventListener("complete", this.loadingHandler()); this gives me an error
},

this.loadingHandler = function(){
    console.log("im doing something")
}
  

错误:“未捕获错误:addListener仅接受实例   功能。事件“完成”的监听器是“未定义”

但是,如果我将loadHandler()函数放在作用域内,例如:

this.startLoading = function(){
     var loadingHandler = function(){...}
     this.a.addEventListener("complete", loadingHandler()); // this works
 },

我不确定函数的哪些实例在这方面意味着什么?

1 个答案:

答案 0 :(得分:1)

当您在对函数的引用之后放置()时,这意味着调用函数,并且表达式的值是函数返回的任何值。

你说的第二个例子,实际上是行不通的,如果调用“startLoading”函数,你会得到同样的错误。

因为你可能需要保留适当的上下文(this),你可能需要的是

this.a.addEventListener("complete", this.loadingHandler.bind(this));

.bind()方法会返回一个函数(正是addEventListener所要求的函数),而函数又将调用您的函数,使this具有所请求的值。