2017-04-21 121 views
-1

我一直在研究對象和功能,並不能弄清楚下面的代碼是什麼。我已經查看了所有可以找到的對象的聲明類型,並且找不到像這樣的聲明類型。下面是代碼:這是一個對象還是函數或別的東西?

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

這是宣佈類'的新實例Maplace的構造函數顯然接受一個對象作爲參數。 –

+1

-1表示有人投下了你的問題。看看它如何在這裏工作http://stackoverflow.com/help/whats-reputation – BWMustang13

+1

這個問題已經足夠清楚,我可以回答他的問題,並讓他的代碼工作。 –

回答

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 }); 
+0

是的,這確實有很大幫助,謝謝! –

+0

這就是爲什麼我感到困惑:我再次閱讀JS文檔(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Using_a_constructor_function),但沒有任何新的開始。它總是以var開頭。 –

+1

我擴大了我的答案與更多關於'新'的細節。你發佈的代碼確實看起來很奇怪。 –

相關問題