3

これが私のコードで、数字を出力することを期待しています。代わりに、数字とすべてのコードを出力します。

function Employee(salaryJan, salaryFeb, salaryMar){
    this.salaryJan = salaryJan;
    this.salaryFeb = salaryFeb;
    this.salaryMar = salaryMar;
}

var dennis = new Employee(6575, 7631, 8000);

Employee.prototype.sumAll = function(){
    var sum = 0;
    for (salary in this){
        sum += this[salary];
    }
    console.log(sum);
};

dennis.sumAll();

現在、私のコードは次のように出力されます。

22206function (){
    var sum = 0;
    for (salary in this){
        sum += this[salary];
    }
    console.log(sum);
}

欲しいだけ22206なのに、なぜコードも出力されるのかわかりません。

私はこれのためにJSFiddleフィドルを持っています:http://jsfiddle.net/dennisboys/LZeQr/1/

4

1 に答える 1

4

ここに問題があります:

for (salary in this)

これにより、のすべてのプロパティがループされますthis。それらのプロパティを見てみましょう:

this.salaryJan
this.salaryFeb
this.salaryMar
Employee.prototype.sumAll

コンソールに出力される4つのプロパティがあります。

hasOwnProperty次の方法を使用する必要があります。

for (prop in this) {
    if (this.hasOwnProperty(prop)) 
        sum += this[prop];
    }
}

そして、これがライブデモです。

于 2013-01-18T06:46:13.267 に答える