在javascript回调中引用“this”

有些东西一直困扰着我在 Javascript中进行面向对象编码的方式.当有回调时,我经常想引用最初调用函数的对象,这导致我做这样的事情:
MyClass.prototype.doSomething = function(obj,callback) {
    var me = this; // ugh
    obj.loadSomething(function(err,result) {
        me.data = result; // ugh
        callback(null,me);
    });
}

首先,总是创建额外的变量对我来说太过分了.此外,我不得不怀疑它是否可能最终导致问题(循环引用?un-GCd对象?)通过将“me”变量传递回回调.

有没有更好的方法解决这个问题?这种做法是邪恶的吗?

解决方法

这就是 Function.bind()的用途:
MyClass.prototype.doSomething = function(obj,callback) {
    obj.loadSomething((function(err,result) {
        this.data = result;
        callback(null,this);
    }).bind(this));
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...