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 的全部意义在于测试该属性 /isn't/ 从原型中获得,因此测试应该失败。

于 2016-05-13T17:42:31.963 回答