yano3nora
7/2/2017 - 11:14 AM

[js: bind(this)] bind(this) でコールバック内 this 制御するよ。 #js

[js: bind(this)] bind(this) でコールバック内 this 制御するよ。 #js

// this のコンテキストが変わるのを self で抑える例
Person.prototype.sayName = function() {
    var self = this;
    Speaker.say(function() {
        return self.nickname;
    });
};

// bind(this) を引数に this を引き継ぐ例
Person.prototype.sayName = function() {
    Speaker.say(function() {
        return this.nickname;
    }.bind(this));
};

// es6 アロー関数 はもともと this を引き継ぐよ
Person.prototype.sayName = () => {
    Speaker.say(function() {
        return this.nickname;
    });
};