2013-08-02 43 views
0

我在一个变量中有JavaScript对象,我尝试从其外部访问它。目前的形式只是提醒整个函数的代码。我知道这是一个可变范围问题。如何从变量外部访问JavaScript对象

JsFiddle

如何提醒,例如,对于ID为1的名字吗?

var LocalStorage = function() { 
    var queries = [ 
     {id: 1, name: "Mike", age: 28}, 
     {id: 2, name: "Jane", age: 18}, 
     {id: 3, name: "Miles", age: 28}, 
    ]; 
} 

var app = { 
    initialize: function() { 
     alert(LocalStorage); 
    } 
}; 

app.initialize(); 
+0

什么是摆在首位具有'LocalStorage'功能的呢?为什么不在正确的范围内定义数组? –

+0

我知道这会更有意义。但是,在最终的应用程序中,我希望LocalStorage独立存在于文件中。我只是简单说明了一切。 – Fisu

回答

1

您想要将变量指定为对象本身的属性。

var LocalStorage = new (function() { 
    this.queries = [ 
     {id: 1, name: "Mike", age: 28}, 
     {id: 2, name: "Jane", age: 18}, 
     {id: 3, name: "Miles", age: 28}, 
    ]; 
    this.foo = "Bar"; 
})() 

var app = { 
    initialize: function() { 
     alert(LocalStorage.queries[0].name); //Alerts "Mike" 
     alert(LocalStorage.foo); //Alerts "bar" 
    } 
}; 

app.initialize(); 

http://jsfiddle.net/qKJag/7/

+0

你应该编辑Mihails并删除这个答案当你的编辑被接受 – SteveKB

+0

嗯,我最初提到他的答案,因为我认为他是提琴的那个人;刚刚注意到它是用于原文的。我认为我的内容与他的回答明显不同。 (这两个都是可行的解决方案) – Retsam

+0

我明白了,我同意你的方法使它更有用,因为你可以指定多于一个var在LocalStorage中访问,但认为这是你在看到Mihails的解决方案后想到的东西,但是你认为它不是,我也不能反驳这一点。 :) – SteveKB

1
var LocalStorage = new (function() { 
    var queries = [ 
     {id: 1, name: "Mike", age: 28}, 
     {id: 2, name: "Jane", age: 18}, 
     {id: 3, name: "Miles", age: 28}, 
    ]; 
    return queries 
})() 

var app = { 
    initialize: function() { 
     alert(LocalStorage[0].id); 
    } 
}; 

app.initialize(); 

http://jsfiddle.net/qKJag/3/

但它是没有那么好办法。如果只使用Array,则不需要使用LocalStorage函数。

相关问题