javascriptのメソッド呼び出しと関数呼び出しを整理

javascriptでは、関数の中でオブジェクトのプロパティに格納されているものをメソッドと呼ぶようです
this にセットされるものが変わるのをおさらい

例としてはこんなの

var obj = {
    value: 1,
    doubleup: function() {
        this.value += this.value;
    },
    tripleup : function() {
        var that = this;
        var helper = function() {
            // this -> globalオブジェクトがセットされる
            that.value = that.value * 3;
        };
        helper();
    }
};

doubleup、tripleup がメソッドです

メソッド内ではthisにそのオブジェクトがセットされます
doubleupでは、objのvalueを2倍してます

tripleupのなかでは、thisが使えますが、その中の関数内では
this が グローバルオブジェクト になってしまいます(いけてない)

そのため、いったん var that = this; としておいてあげれば、valueをセットできます

実行するとこんな感じ

obj.doubleup();
console.log(obj.value); // 2

obj.tripleup();
console.log(obj.value); // 6

thisの動きがすこしスッキリしました

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください