0

申し訳ありませんが、問題を正確に説明できないため、例を示します。

window.onload = function() {
    var obj = new classs(2);
    alert(obj.x2);

    function classs(value){
        this.value = value;

        var multiplication = function(value, n){
            console.log(n);
            return parseInt(value) * parseInt(n);
        }

        this.x1 = multiplication(this.value, 1);
        this.x2 = multiplication(this.value, 2);
        this.x3 = multiplication(this.value, 3);
    }
}

だから私は だけobj.x2を呼び出しますが、console.log(n);3回印刷します。私は何を間違っていますか?

4

3 に答える 3

3

プロパティを読み取っx2ても、コンソールには何も記録されません。既に計算された値のみが読み取られます。

プロパティx1とはオブジェクトの作成時x2x3計算されるclasssため、プロパティを読み取る前に値がコンソールに記録されx2ます。プロパティを使用する行をコメントアウトしてもx2、値は引き続きログに記録されます。


オブジェクトの作成後に計算を行いたい場合は、代わりに関数を使用する必要があります。

this.x2 = function() { multiplication(this.value, 2); }

使用法:

alert(obj.x2());
于 2012-10-10T18:17:00.530 に答える
0

掛け算を 3 回呼び出すだけなので

オブジェクトを作成するとき

var obj = new classs(2);

その内部でコードを実行し、ご覧のとおり、関数「乗算」の呼び出しが 3 つあります。

this.x1 = multiplication(this.value, 1);
this.x2 = multiplication(this.value, 2);
this.x3 = multiplication(this.value, 3);
于 2012-10-10T18:16:23.777 に答える
0

クラスを実行すると、x1、x2、x3 が設定されている場合、乗算関数が 3 回実行されます。そのため、console.log は 3 回ヒットします。一方、アラートは、obj.x2 でアラートを呼び出すため、一度だけ発生します。

于 2012-10-10T18:19:04.700 に答える