【问题标题】:hasOwnProperty -wont show property even if it has the propertyhasOwnProperty - 不会显示属性,即使它有属性
【发布时间】:2016-05-13 17:40:08
【问题描述】:

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

循环(字母);

【问题讨论】:

    标签: javascript object prototype hasownproperty


    【解决方案1】:

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

    至少,如果您按照您的意图拨打obj.hasOwnProperty('c'),答案就是这样。您实际调用的是obj.hasOwnProperty(window.c),即obj.hasOwnProperty(undefined),显然是false

    【讨论】:

      【解决方案2】:

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

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

      hasOwnProperty 的全部意义在于测试该属性 /isn't/ 从原型获得,因此测试应该失败。

      【讨论】:

      • 我想做的是:function looping(obj){ var properties=[]; if (!obj.hasOwnProperty("c")) { properties.push(key); } 返回属性; } //所以如果它不是 c 属性,则仅将其推送到属性数组 - 因此推送 ll 属性但该特定属性,这就是我尝试使用 hasOwnProperty 测试的内容
      • 对不起,我错过了包含循环 // for (var key in obj)
      • 对,我猜你想要function (o) { return Object.keys(o).filter(function (k) { return !o.hasOwnProperty(k) }) } 之类的东西。但是更多的上下文会有所帮助。
      猜你喜欢
      • 2018-07-17
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多