1

したがって、以下は、のスコープを使用できるように に設定thatした場合の非常に必要最小限の例です。Function.prototype.bind をどのように統合すれば、将来どのように使用できるかを確認できますか?thismyObj

var myObj = {

        specialFunction: function () {

        },

        anotherSpecialFunction(){

        },

        getAsyncData: function (cb) {
            // an operation
            cb();
        },

        render: function () {
            var that = this;
            this.getAsyncData(function () {
                that.specialFunction();
                that.anotherSpecialFunction();
            });
        }
    };

    myObj.render();
4

3 に答える 3

2

必要なメソッドで bind を使用し、コンテキストを指定するだけです

render: function () {
    this.getAsyncData(this.specialFunction.bind(this));
}

    render: function () {
        this.getAsyncData(someFunction.bind(this));
        function someFunction() {
            this.specialFunction();
            this.anotherSpecialFunction();
        }
    }
于 2013-10-07T15:05:19.087 に答える
0

渡されたコールバック関数内thisを引き続き参照したい場合は、関数を次のようにする必要があります。myObjgetAsyncDatarender

render: function () {
    this.getAsyncData((function () {
        this.specialFunction();
        this.anotherSpecialFunction();
    }).bind(this));
}
于 2013-10-07T15:18:27.490 に答える