クラス内のメソッド内でthisを使いたいときの対応
仕事でボタンをクリックしたらとあるクラスのプロパティに
テキストボックスの値を突っ込みたい。というようなことをやりたかったんだけど
いいやり方が思いつかなかったので以下のように対応してた。
var ClassA = function(){ this.property = "test"; } ClassA.prototype.setProperty = function(){ var that = this; $('#button').click(function(){ // this.property = $('#textbox').val();と書いても // thisを指しているのがClassAのインスタンスではないので正しく代入できない。 // 実際にはfunctionの頭にthisを変数に代入してその変数を使うようにする。 that.property = $('#textbox').val(); }); }
他にうまい方法がないかなーといろいろ情報をあさってみるとオライリーの
JavaScript Good Partsの4.3.2に上記のような方法が書かれていた。
やり方自体は間違ってなかったようだ。ただ、その際の変数は「that」とするのが通例らしい。