我一直在研究对象和函数,但无法弄清楚下面的代码是什么。我已经查看了我可以找到的所有对象的声明类型,但是找不到这样的声明类型。这是代码:
new Maplace({
locations: SampleLocations,
map_div: '.gmap-container',
name: 'Map'
});
我见过的最接近的是:
var person = new Object();
最后我试图编辑其中一个对象属性(如果是这样的话)。例如,我想稍后在我的脚本中更新locations
。
如果这是一个函数,我还没有看到过具有key:value对的函数。如果这是一个对象,为什么我在尝试这个时总是记录错误:
console.log(Maplace.name);
我在使用此插件(maplacejs.com)时获得了此代码。我查看了他们的脚本(因为我对JS很新)我无法弄清楚如何更新其中一个对象属性。然而,在他们的设置文档中,您将如何创建Maplace对象的新实例。
答案 0 :(得分:1)
代码通过调用构造函数创建一个新对象。构造函数的单个参数是一个对象。下面的代码做了同样的事情:
var myObject = {
locations: SampleLocations,
map_div: '.gmap-container',
name: 'Map'
};
new Maplace(myObject);
希望明确指出这两个步骤会让你更清楚。
但由于一个原因,上面的代码有点奇怪。当您使用new
关键字时,它会创建一个新对象。并且上面的代码不存储该对象,它似乎抛弃了该对象。或者Maplace
中的代码可能正在做一些意想不到的事情,比如创建全局变量或其他一些副作用。通常,您将新对象存储在变量中:
var myMaPlace = new Maplace(myObject);
正如我所怀疑的那样,在reading the docs和looking at the code上,示例都使用变量来存储新对象或立即调用Load
方法将地图附加到html元素并立即显示地图。在这种情况下,对象被"抛出",但由于地图已经显示可能没问题。
另外,根据文档,你可以使用Load
方法更改选项,所以我想这样的东西可以工作(未经测试):
var myMap = new Maplace({
locations: SampleLocations,
map_div: '.gmap-container',
name: 'Map'
}).Load();
// Later
myMap.Load({ locations: newLocations });