hasOwnProperty -wont显示属性,即使它具有该属性

时间:2016-05-13 17:40:09

标签: javascript object prototype hasownproperty

我试图理解为什么我调用以下函数时的结果是" no"因为属性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");
}
}

循环(字母);

2 个答案:

答案 0 :(得分:2)

“拥有自己的属性”cc是其原型的一部分,因此它不是您正在测试的对象的自有属性。

至少,如果您按照预期的那样打电话给obj.hasOwnProperty('c'),那就是答案。您实际呼叫的是obj.hasOwnProperty(window.c)obj.hasOwnProperty(undefined),显然是false

答案 1 :(得分:0)

hasOwnProperty的参数应该是一个字符串。

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

另外,hasOwnProperty的要点是要测试属性/不是/从原型获得的,所以测试应该失败。