JavaScript 中的函数调用

问题描述 投票:0回答:1

我定义了一个 JavaScript 对象,其中有两个函数

test1
test2

当我使用

test1
test2
内呼叫
this.test1()
时,它会显示

test1
不是函数

当我使用

test1
test2
内调用
objectname.test1()
时,效果很好。

有什么原因导致我无法使用

this
调用其他函数?

    servicesFilteringObject = {

       init: function(){
         // Created Checkboxes dynamically and associated handleFilter on onclick of it

       },
       handlePrimeryContent: function(){
         // Some code

       },
      handleFilter : function(){
           servicesFilteringObject.handlePrimeryContent();// works
           this.handlePrimeryContent(); //does not work
      }
 }

    servicesFilteringObject.init();
javascript this
1个回答
0
投票

如果“handleFilter”被调用为

servicesPrimaryObject.handleFilter();

然后

this
将引用该对象(“servicesPrimaryObject”)。 但是,如果您将该函数的引用传递给其他函数(可能作为事件处理程序),那么当从其他上下文调用时,将不会出现
this
。 您可以使用“bind()”来解决这个问题:

somethingElse(servicesPrimaryObject.handleFilter.bind(servicesPrimaryObject));

这将确保当稍后调用该函数时,函数内部的

this
始终是正确的对象。

© www.soinside.com 2019 - 2024. All rights reserved.