0

プロパティ c が存在する必要があるため、以下の関数を呼び出したときの結果が「いいえ」になる理由を理解しようとしています。誰かが理由を知っていますか?ありがとう!!!

var letters = function() {
    this.a = 5;
    this.b = 20;
  };

  letters.prototype = {
    c: 10
  };

  var letters = new letters();

function looping(obj){
if (obj.hasOwnProperty(this.c)) {
console.log("ua");
}
else {
    console.log("no");
}
}

ループ(文字);

4

2 に答える 2

2

ただし、 「独自のプロパティを持っている」わけではありませんccはプロトタイプの一部であるため、テストしているオブジェクトの独自のプロパティではありません。

少なくとも、obj.hasOwnProperty('c')おそらく意図したとおりに電話をかけていれば、それが答えになるでしょう。あなたが実際に呼んでいるのは ですobj.hasOwnProperty(window.c)、これは ですobj.hasOwnProperty(undefined)、これは明らかにfalseです 。

于 2016-05-13T17:42:35.840 に答える
0

hasOwnProperty の引数は文字列でなければなりません。

console.log(obj.hasOwnProperty("c") ? "UA" : "no")

また、hasOwnProperty の要点は、プロパティがプロトタイプから取得されていないことをテストすることなので、テストは失敗するはずです。

于 2016-05-13T17:42:31.963 に答える