我在封装web控件时遇到一个this调用问题,主要思想是将控件封装成一个js类,但是这个类中某个方法成员中有一个闭包,且该闭包要对此类中的方法进行调用,我直接使用this进行调用失败,先看代码,标红的部分是我已经修改过的,修改前的代码为
createMenu1: function () {
var xmlHttp = this.createXmlHttp();
xmlHttp.open("get", "Menu1.xml", true);
xmlHttp.send(null);
xmlHttp.onreadystatechange = onReadyStateChange;
function onReadyStateChange() {
if (xmlHttp.status == 200 & xmlHttp.readyState == 4) {
var menu1Xml = xmlHttp.responseXML;
//JQuery操作实现动态效果
this.analysisXmlAndCreateHtml(menu1Xml);
// this.setMenuStyle();
this.bindAction();
}
}
}
修改后地代码
/*
* 说明:Menu1类,实现菜单的快速创建* 创建人: Lixam
* 创建时间:2013-9-10
* 修改人:
* 修改时间:
*/
var Menu1 = function () { }
Menu1.prototype = {
/*
* 功能: 创建menu1
* 参数: 无
* 返回值: 无
* 创建人: Lixam
* 创建时间:2013-9-11
* 修改人:
* 修改时间:
*/
createMenu1: function () {
var xmlHttp = this.createXmlHttp();
xmlHttp.open("get", "Menu1.xml", true);
xmlHttp.send(null);
var _this = this; //缓存this,以便闭包函数调用
xmlHttp.onreadystatechange = onReadyStateChange;
function onReadyStateChange() {