Javascript hasOwnProperty-即使具有属性,也不会显示属性
我试图理解为什么我调用下面的函数时结果是“否”,因为属性c应该存在。有人知道为什么吗?谢谢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
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)}
。但是更多的上下文可能会有所帮助。