2017-03-29 120 views
0

加載地圖奇怪的工作:Bing地圖V8和的instanceof

map = new Microsoft.Maps.Map(document.getElementById('myMap'), { 
    ... 
}); 

,它工作正常(視覺)。但是:

console.log(map instanceof Microsoft.Maps.Map); // false 

Whaaat ?! :)我怎樣才能檢查它?這是一個錯誤還是我的錯誤?

您可以嘗試在Bing開發中心沙盤例如:

http://www.bing.com/api/maps/sdkrelease/mapcontrol/isdk#loadMapAsync+JS

感謝

+0

你可以檢查'console.dir(Object.getPrototypeoOf(map))'日誌嗎? – Bergi

回答

0

使用了Bing應用程序開發頁面,如果你編輯出它仍然有效的new,並記錄map.constructor只是打印function n()。所以看起來微軟並沒有完全準確地知道代碼目前在做什麼 - 這是作爲一個對象工廠。

Microsoft 可能保留將Maps.Map作爲對象構造函數的權利。目前instanceof返回false是正確的。

+0

這是設計。 Map對象是另一個類的包裝器。 V8實際上有一套完整的代碼語法,這是微軟內部的一套代碼語法,並且與V7 – rbrundritt

+0

@rbrundritt感謝向後兼容。你知道是否使用'new'創建的對象嗎?我**並非**建議將'new'關鍵字留出,以防出於非顯而易見的原因或未來Microsoft需要它。 – traktor53

+1

夠搞笑的是,我從來不知道沒有新的關鍵字就會加載地圖。以前版本的Bing地圖會引發錯誤。我建議留下它,因爲它不太可能突破,因爲這是如何記錄的。 – rbrundritt