0

こんにちは、次のようなコードがあります。

var myClass = {
    globalVar : {
        total : 100
    },
    myFunction : {
        getTotal : function() {
            return this.globalVar.total;
        }
    },
};

// Uncaught TypeError: Cannot read property 'total' of undefined 
alert(myClass.myFunction.getTotal() );

キーワードはundefinedthisを返します。なぜですか? の代わりに使っているからですか?var myClassfunction myClass()

ありがとう

[編集] ここに JSFiddle がありますhttp://jsfiddle.net/DarcFiddle/cg7Fk/

4

3 に答える 3

0

thisであることが判明したので、どれが存在しないmyFunctionと言っているようなものです。myFunction.globalVar.total

必要に応じて、このように再利用可能にすることができます。

function Food(cost) {
    this.getTotal = function () {
        return cost + (cost * 0.05); // add 5%
    };
}

var sandwich = new Food(2.50);

alert( sandwich.getTotal() ); // 2.625

http://jsfiddle.net/thetenfold/HvHxR/


「クラス」 (いわば)を作る方法はたくさんあります。
これが唯一の方法ではありませんが、まともな方法です。

于 2013-10-07T04:33:09.033 に答える