如何在回调中调用对象的键?

Boy*_*oyo 5 javascript oop closures

我怎样才能在obj的处理函数中得到变量?如果没有参考OBJMyClass的.

    var obj = {
        func: function(){
            var myClass = new MyClass();
            myClass.handler = this.handler;
            myClass.play();        
        },

        handler: function(){
            //Here i don't have access to obj
            console.log(this); //MyClass
            console.log(this.variable); //undefined
        },

        variable:true
    };

    function MyClass(){
        this.play = function(){
            this.handler();
        };

        this.handler = function(){};
    };

    obj.func();
Run Code Online (Sandbox Code Playgroud)

如果您使用Base.js或其他类似的oop方式,那么构建需要您.

_.bindAll(obj)(下划线metod)也不合适.它在Base.js中突破了.

Mis*_*lin 2

仅绑定处理程序方法:http://jsfiddle.net/uZN3e/1/

\n\n
var obj = {\n    variable:true,\n\n    func: function(){\n        var myClass = new MyClass();\n        // notice Function.bind call here\n        // you can use _.bind instead to make it compatible with legacy browsers\n        myClass.handler = this.handler.bind(this);\n        myClass.play();        \n    },\n\n    handler: function(){\n        console.log(this.variable);\n    }\n};\n\nfunction MyClass(){\n    this.play = function(){\n        this.handler();\n    };\n\n    this.handler = function(){};\n};\n\nobj.func();\n\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n