为什么$ .extend(window,window,someobject)会触发页面刷新?

时间:2011-07-18 04:35:00

标签: javascript jquery

我有这样的对象:

var example = {
    test1: 10,
    test2: 20,
    test3: 30
}

出于某种原因,我想在没有test#的情况下使用example个变量,所以我像这样扩展了window个对象(使用jQuery):

$.extend(window, window, example)

但是,每当此函数调用时,页面都会刷新。

还有一个问题,如果我尝试以同样的方式扩展document,会发生一些错误:(在Chrome中)

  

错误:NAMESPACE_ERR:DOM异常14

为什么?有没有办法使用没有对象(命名空间)名称的变量?

1 个答案:

答案 0 :(得分:7)

您的$.extend来电与此相同:

window.location = window.location;

这将刷新页面。

$.extend函数实质上将所有属性(使用简单赋值)从第二个参数复制到第一个参数,并返回(更新的)第一个参数。在您的第二个参数window中,会有location属性,当您为window.location分配内容时,您会更改页面,如果新的和location值是同样,你将刷新当前页面。

如果您要将example中的所有媒体资源添加到window,请执行以下操作:

$.extend(window, example);

至于“是否有任何方法可以使用没有对象(命名空间)名称的变量?”去,只需将您的变量添加为window的属性,您就可以在没有前缀的情况下访问它们:

window.where_is = "pancakes house?";
alert(where_is);

例如:http://jsfiddle.net/ambiguous/T7cNx/

相关问题