2016-11-05 49 views
1
位置

数组我一直对这个代码,但我困惑的是,为什么它不工作。我已经创造了三个“geocache的”对象,并将它们分配给称为“缓存”的数组。为了测试,我已经赋值的变量“”来无论是在中缓存指数1。然后我定义的变量“挑逗”为的“lony”属性。分配对象数组,然后调用它基于

function Geocache (lat, lon, disc){ 
 
    this.laty=lat; 
 
    this.lony=lon; 
 
    this.disc=disc; 
 
} 
 

 
    
 
var loc1=new Geocache(43.77416104496804, -79.50804830784301, "lifesci building"); 
 
var loc2=new Geocache(43.77381242916627, -79.50533927673797, "lassonde building"); 
 
var loc3=new Geocache(43.77305321438563, -79.50353146786193, "vari hall"); 
 
var caches=[loc1,loc2,loc3]; 
 

 
var value = caches[1]; 
 
var tease=value.lony;

这应该回吐的价值“-79.505 ...”,而是我得到预览“未定义”。 有人可以帮我找出这个代码有什么问题,因为我似乎无法弄清楚。

+0

工作正常,我。 – user2182349

+0

在Chrome上失败,因为它似乎与 - > https://developer.mozilla.org/en-US/docs/Web/API/Window/caches发生冲突而且这是只读的。所以你的'var caches'实际上等于window.caches ..将你的代码放在自调函数中,..以阻止你的vars污染全局窗口对象。 PS ..编辑您的代码片段,并将您的JavaScript代码放在javascript部分中:) – Keith

回答

1

这里是你的代码,在代码片段的JavaScript部分中的JavaScript。

并修复使用自调用函数来阻止全球泄漏。

function Geocache (lat, lon, disc){ 
 
    this.laty=lat; 
 
    this.lony=lon; 
 
    this.disc=disc; 
 
} 
 

 
(function() { 
 
    var loc1=new Geocache(43.77416104496804, -79.50804830784301, "lifesci building"); 
 
    var loc2=new Geocache(43.77381242916627, -79.50533927673797, "lassonde building"); 
 
    var loc3=new Geocache(43.77305321438563, -79.50353146786193, "vari hall"); 
 
    var caches=[loc1,loc2,loc3]; 
 

 
    var value = caches[1]; 
 
    var tease=value.lony; 
 
    console.log(tease); 
 
})();