javascript - prototype 方法中用 this 指向变量,在使用 bind 绑定事件后 this指向出错
PHP中文网
PHP中文网 2017-04-10 18:04:07
[JavaScript讨论组]

如下代码, errorRemove() 方法中 this 指向的是 defaults.ID ,然而我在 init() 中对 errorRemove() 方法进行了事件绑定,这时 this 的指向,发生了改变,成了 defaults.ID

如何在继续使用 this 而不使用其他办法的情况下,做到 this的指向经过事件绑定后不发生改变

(function(){

    //默认配置
    var defaults = {
        ID : $('#userName'),
        Error : $('.error'),
        userBooleans : false
    };
    
    var userBasic = function(options){

        this.config = $.extend({}, defaults, options);
        this.init();
    };

    userBasic.prototype = {

        init : function(){

            var that = this;

            //这里 errorRemove 中的 this 指向的是 defaults.ID
            this.config.ID.bind('focus',that.errorRemove);
           
        },
        errorRemove : function(txt){
        
            //这里 this 指向的是 defaults.Error
            this.config.Error.html(txt);
            this.config.userBooleans = false;
        }
   }
});
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
迷茫

什么叫“this指向的是 defaults.ID ... this 发生了改变,成了 defaults.ID”

不知道你要说明的问题,告诉你个函数吧 bind (不是jq的bind,是js原生的bind)
http://zonxin.github.io/post/2015/11/jav...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号