javascript 関数内で this を参照する時は

javascriptでつくったクラス(厳密にはクラスではない)内で this を参照しようとした時にハマったのでメモ

動かそうとしたコードは以下


function AryPlus(elements) {
	this.tmpArray = [];

	$.each(elements, function(index, value) {
        this.tmpArray[index + 1] = value;
    })
}

var set = new AryPlus(hogeArray);

console.log(set.tmpArray);

引数に代入した配列の value を index に対して 1つずつずらしていくもの
本当はもっと長いのですが本題はそこではないので省略します。

で、これが動きませんでした。

なんでも関数オブジェクト内でthisの値を参照してゴニョゴニョする場合、
以下のように this を bind させなければいけないようです


function AryPlus(elements) {
	this.tmpArray = [];

	$.each(elements, function(index, value) {
        this.tmpArray[index + 1] = value;
    }.bind(this))
}

var set = new AryPlus(hogeArray);

console.log(set.tmpArray);

これでOK。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です