Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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 为什么";地点“;在我将jQuery包含到页面后,属性是否会在Object.keys()中结束?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 为什么";地点“;在我将jQuery包含到页面后,属性是否会在Object.keys()中结束?

Javascript 为什么";地点“;在我将jQuery包含到页面后,属性是否会在Object.keys()中结束?,javascript,jquery,html,Javascript,Jquery,Html,我有以下代码: <script> console.log( Object.keys( this ) ); </script> <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script> console.log( Object.keys( this ) ); </script> 现场演示: 注意执行jQuery后,

我有以下代码:

<script>
    console.log( Object.keys( this ) );
</script>

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

<script>
    console.log( Object.keys( this ) );
</script>
现场演示:

注意执行jQuery后,
Object.keys(this)
如何返回另外三个元素。我理解为什么要添加
“$”
,以及
“jQuery”
,但为什么要添加
“location”


我还测试了Chrome和IE10。在这两个版本中,都只添加了
“$”
,以及
“jQuery”

在firefox中,默认情况下,位置不在键中,但在Chrome和IE中,位置就在那里。在Chrome和IE10中测试这一点:在你的小提琴中,你可以看到Chrome和ie中的位置,它只是不在阵列中的同一位置

因为我必须包含代码来发布这个

<script>
    console.log( Object.keys( this ) );
</script>

log(Object.keys(this));

实际上,我还没有在IE10中对此进行测试,我目前没有访问权限。

jQuery 1.9.1的内部初始化代码中包含以下内容:

var location = window.location;
在顶级上下文中,
这个
窗口
,因此您正在测试
对象.键(窗口)
。显然,Firefox神奇地处理了
window.location
属性——除非被访问,否则它不会显示在
键中。因此,上述任务的一个副作用是使它出现在那里


这个局部变量不在jQuery 1.11.1或jQuery 2.1.1中,因此简单地加载jQuery应该不会有这种副作用。

在chrome和IE10中,位置已经是其中的一部分。还是我遗漏了什么?对我的问题是,jQuery做了什么使它出现在Firefox中?请注意,Firefox中确实存在
location
全局属性,只是它没有出现在
Object.keys()
中。但是,一旦jQuery执行,它就会出现。检查一下:似乎仅仅通过访问就可以在
Object.keys()
中显示
location
属性。这与此有什么关系?当您显式创建一个新的全局属性时(通过全局代码中的
var foo
,或通过分配到
window.foo
),该属性将显示在
对象.keys()中。但是
location
是一个内置的全局属性,它只有在被访问后才会显示。@ŠimeVidas所以我想你真正的问题是,为什么location不显示在Object.keys中,而这是firefox的开始。如果您查看jQuery核心,您可以看到访问位置的位置,这使它正确地显示出来(除了添加了两个全局变量
jQuery
$
)。我建议缩小这个问题的范围,不包括jQuery,而是关注真正的问题。
var location = window.location;