关于js类中闭包调用this问题

我在封装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() {
     
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值