2011-07-18 69 views
0

我有这样的对象:

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

出于某种原因,我想用test#变量,而无需example,所以我延长window对象像这样(使用jQuery):

$.extend(window, window, example) 

但是,每当此功能已调用,页面已刷新。

还有一个问题,如果我尝试以同样的方式延伸document,产生了某种错误是这样的:(在Chrome)

Error: NAMESPACE_ERR: DOM Exception 14

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

+1

为什么你传递'window'两次?如果你只是''.extend(window,example)'',它会起作用吗? – aroth

回答

7

$.extend调用不做这相当于:

window.location = window.location; 

这将刷新页面。

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

如果你想在example添加所有的属性window,只是这样做:

$.extend(window, example); 

至于“而且是有什么办法可以使用变量没有对象空间(namespace)的名字吗?”云,只需添加您的变量为window属性,你就可以访问它们没有前缀:

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

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

+0

这是很好的答案。我忘了使用'.extend(窗口,例子)'。无论如何,我有一些新的信息。谢谢! –

相关问题