2017-07-11 63 views
0

我正在嘗試創建Google地圖疊加視圖。我在這裏有這個代碼在ES5告訴我要在我的標誌原型初始化對象象下面這樣:我應該如何將原型初始化轉換爲ES6

MainMarker.prototype = new google.maps.OverlayView(); 

如何準確地將它轉換爲ES6?

繼承,如Child.prototype = Object.create(Parent.prototype),這在ES6,我們可以編寫

class Child extends Parent { 
    constructor() { 
     super(); 
    } 
} 

但如何來約與第一個?

回答

1

我在這裏有這個代碼在ES5告訴我,在我的標誌原型初始化對象象下面這樣:

MainMarker.prototype = new google.maps.OverlayView(); 

never was the correct way in ES5 無論如何,所以不要試圖讓壞周圍的做法。
只是去

class MainMarker extends google.maps.OverlayView { … } 

1:在這種特殊情況下,它不會有所作爲是否newObject.create被使用,API docs明確指出,「OverlayView構造保證是空的功能「。谷歌可能在他們的例子中使用了前面的語法,因爲它更向後兼容。

+0

我不明白'Child.prototype = Parent.prototype'與'Child.prototype = Object.create(Parent.prototype)'之間的區別,我相信'Object.create'會創建一個' Parent.prototype'但不初始化。在這種情況下,Child.prototype = new Parent(),它是不是初始化** Child的**原型對象? – cs1193

+0

最佳做法與否,OP會特別詢問ES5 – terpinmd

+0

@ cs1193首先根本不會創建副本,只是使用相同的對象。 'Object.create()'確實創建了一個從參數繼承的新對象。 'new Parent()'確實會初始化我們不想要的原型對象。另請參見[here](https://stackoverflow.com/a/17393153/1048572?Benefits-of-using-Object.create-for-inheritance)和[here](https://stackoverflow.com/questions/11088365/why-wouldnt-i-use-child-prototype-parent-prototype-rather-child-prototype-new-parent) – Bergi

相關問題