这是一个对象或功能还是别的什么?

时间:2017-04-21 16:57:26

标签: javascript object

我一直在研究对象和函数,但无法弄清楚下面的代码是什么。我已经查看了我可以找到的所有对象的声明类型,但是找不到这样的声明类型。这是代码:

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对象的新实例。

1 个答案:

答案 0 :(得分:1)

代码通过调用构造函数创建一个新对象。构造函数的单个参数是一个对象。下面的代码做了同样的事情:

var myObject = {
  locations: SampleLocations,
  map_div: '.gmap-container',
  name: 'Map'
};

new Maplace(myObject);

希望明确指出这两个步骤会让你更清楚。

但由于一个原因,上面的代码有点奇怪。当您使用new关键字时,它会创建一个新对象。并且上面的代码不存储该对象,它似乎抛弃了该对象。或者Maplace中的代码可能正在做一些意想不到的事情,比如创建全局变量或其他一些副作用。通常,您将新对象存储在变量中:

var myMaPlace = new Maplace(myObject);

正如我所怀疑的那样,在reading the docslooking at the code上,示例都使用变量来存储新对象立即调用Load方法将地图附加到html元素并立即显示地图。在这种情况下,对象被"抛出",但由于地图已经显示可能没问题。

另外,根据文档,你可以使用Load方法更改选项,所以我想这样的东西可以工作(未经测试):

var myMap = new Maplace({
  locations: SampleLocations,
  map_div: '.gmap-container',
  name: 'Map'
}).Load();

// Later
myMap.Load({ locations: newLocations });