Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么hasOwnProperty返回true_Javascript - Fatal编程技术网

Javascript 为什么hasOwnProperty返回true

Javascript 为什么hasOwnProperty返回true,javascript,Javascript,这个问题是问题的延伸 这在Google Chrome上发生:- 案例1: 案例2: window.x = 5; delete window.x; // true 案例3: window.x = 5; delete x; // true 如果案例2和案例3有效(删除x),那么案例1为什么不这样做?我知道delete只删除任何属性,在案例1中,x是一个不应该是属性的变量。但是window.hasOwnProperty函数为其返回true 在firefox中,情况1:hasOwnProperty返

这个问题是问题的延伸

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

案例2:

window.x = 5;
delete window.x; // true
案例3:

window.x = 5;
delete x; // true
如果案例2和案例3有效(删除x),那么案例1为什么不这样做?我知道delete只删除任何属性,在案例1中,x是一个不应该是属性的变量。但是window.hasOwnProperty函数为其返回true

在firefox中,情况1:hasOwnProperty返回true,同时删除x返回true…

让我使用我的:

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


同样
object.hasOwnProperty(x)
检查哪些对象具有
x
属性(通过
object.x
)而不是原型链中的
x

只有当
x
声明为
x=5时,第一种情况才是
true
,没有
var
无法使用FF 26.0进行复制,FF在所有实例上返回
true
。但是当我们将其声明为var x时,它也是window对象的一个属性。因此它应该删除是的,我在Chrome中检查,在firefox中行为不同…在Chrome中它的模糊性,当我们使用var x时,x仍然是window的一个属性,我们不能删除它…。但是firefox的行为方式是一致的。因为这个问题已经由您的原始答案回答了,所以它是原始问题的副本,应该标记为原始问题。我完全同意您的看法。我也认为是相同的方式。。但我想它更依赖于浏览器…就像我刚刚发现的那样。。firefox以不同的方式思考。@BhaskarMelkani你怎么会有与前一个问题完全相同的评论,但你不知道这个问题?您是否从某处复制了代码?编辑问题并添加原始问题的链接可能会更好?因为这个问题的主要目标是为什么
hasOwnProperty
返回true。当然,先生…也这样做
window.x = 5;
delete x; // true