Javascript hasOwnProperty-即使具有属性,也不会显示属性

Javascript hasOwnProperty-即使具有属性,也不会显示属性,javascript,object,prototype,hasownproperty,Javascript,Object,Prototype,Hasownproperty,我试图理解为什么我调用下面的函数时结果是“否”,因为属性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.l

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

循环(字母)

hasOwnProperty的参数应该是字符串

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

此外,hasOwnProperty的全部要点是证明属性/不是从原型获得的,因此测试应该失败。

hasOwnProperty的参数应该是字符串

console.log(obj.hasOwnProperty("c") ? "UA" : "no")
此外,hasOwnProperty的整个要点是证明属性不是从原型中获得的,因此测试应该失败。

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

至少,如果您按预期调用
obj.hasOwnProperty('c')
,答案就是这样的。您实际调用的是
obj.hasOwnProperty(window.c)
,这是
obj.hasOwnProperty(未定义)
,这显然是
false

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


至少,如果您按预期调用
obj.hasOwnProperty('c')
,答案就是这样的。您实际调用的是
obj.hasOwnProperty(window.c)
,这是
obj.hasOwnProperty(未定义)
,这显然是
false

我想做的是:函数循环(obj){var属性=[];if(!obj.hasOwnProperty(“c”){properties.push(key);}return properties;}//因此,如果不是c属性,则只将其推送到属性数组,从而推送到ll属性,而是那个特定的属性,这就是我尝试使用hasownproperty测试的内容。很抱歉,我没有包括循环//for(obj中的var key)对,我猜您需要类似于
函数(o){return Object.keys(o)的内容.filter(函数(k){return!o.hasOwnProperty(k)})}
。但更多的上下文可能会有所帮助。我想做的是:函数循环(obj){var properties=[];if(!obj.hasOwnProperty(“c”){properties.push(key);}返回属性;}//因此,如果不是c属性,则只将其推送到属性数组,从而推送到ll属性,而是那个特定属性,这就是我尝试使用HasOwnProperty测试的内容。很抱歉,我没有包括循环//for(obj中的var key)对,我想您需要类似
function(o){return Object.keys(o).filter(function(k){return!o.hasOwnProperty(k)}
。但是更多的上下文可能会有所帮助。