JavaScript中的函数调用
问题描述:
我已经定义了一个JavaScript对象,其中我有两个函数test1
和test2
。JavaScript中的函数调用
当我使用this.test1()
叫test1
内test2
,它说
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();
答
如果 “handleFilter” 被调用作为
servicesPrimaryObject.handleFilter();
然后this
将引用该对象( “servicesPrimaryObject”)。但是,如果将某个函数的引用传递给某个其他函数(可能是一个事件处理函数),那么当从另一个上下文中调用时,将不会有this
。您可以使用“绑定()”来解决这个问题:
somethingElse(servicesPrimaryObject.handleFilter.bind(servicesPrimaryObject));
这将确保this
在函数内部将永远是正确的对象时,此功能可在以后的某个点调用。
发布代码真的很难吗? – Oded 2011-06-15 14:05:29
显示代码。包括你用来调用'test2'的代码。 – delnan 2011-06-15 14:05:39
如果你发布你的代码,有人可以确切地告诉你问题是什么。 – Pointy 2011-06-15 14:05:53