为什么hasOwnProperty返回true

时间:2014-01-15 10:57:33

标签: javascript

此问题是Can't understand the behavior of deleting vars in JavaScript

的扩展

这种情况发生在Google Chrome上: - 案例1:

var x = 5;
window.x === x // true. x, as it seems, is a property of window
window.hasOwnProperty('x');  // true
delete x; // false
delete window.x; // false;

案例2:

window.x = 5;
delete window.x; // true

案例3:

window.x = 5;
delete x; // true

如果CASE 2和3工作(删除x),那么CASE1为什么不这样做呢?我知道删除只删除任何属性,在CASE 1 x中是一个不应该是属性的变量。但是window.hasOwnProperty函数为它返回true。

在firefox for CASE1中:hasOwnProperty返回true并且删除x也返回true ...

1 个答案:

答案 0 :(得分:0)

让我使用我的answer

  

您可以通过var创建全局范围内的变量,而不是窗口的属性   宾语。这个var只链接到window.x.然后你比较   window.x === x它将返回true。

另外object.hasOwnProperty(x)检查哪个对象x作为属性(来自object.x)而不是来自原型链的x