我试图理解为什么我调用以下函数时的结果是" 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");
}
}
循环(字母);
答案 0 :(得分:2)
它不“拥有自己的属性”c
。 c
是其原型的一部分,因此它不是您正在测试的对象的自有属性。
至少,如果您按照预期的那样打电话给obj.hasOwnProperty('c')
,那就是答案。您实际呼叫的是obj.hasOwnProperty(window.c)
,obj.hasOwnProperty(undefined)
,显然是false
。
答案 1 :(得分:0)
hasOwnProperty的参数应该是一个字符串。
console.log(obj.hasOwnProperty("c") ? "UA" : "no")
另外,hasOwnProperty的要点是要测试属性/不是/从原型获得的,所以测试应该失败。