2016-11-11 61 views
1

IE11不支持ECMA Script 6. 所以我不能在IE11中使用「class」語法。 那麼,如何在IE11(ECMA5)中擴展obj?如何在ECMA5(IE11)中擴展JavaScript類?

//only ECMA6+ 
// do not work in IE11 
    class ChildObj extends google.maps.LatLng { 
     constructor(child) { 
      super(Number(child.lat), Number(child.lng)); 
      this.additionalProp = child; 
     } 
    } 
//ECMA5 -> ???? 

我不知道什麼是定義子類的正確方法,例如,上面顯示的ChildObj,在ECMA5中。

我認爲jquery $ .extend不是擴展,而是合併屬性。 那麼,如何在子類中調用父類構造函數呢?

+0

閱讀本https://scotch.io/tutorials/better-javascript-with-es6-pt-ii-a-deep-dive-into -selasses – skav

+2

使用http://babeljs.io/repl/ - 將代碼粘貼到左側 - 從右側複製代碼 –

+0

es6類如何被es5 http:// stackoverflow命名的又一個解釋。 com/a/35776188/2379922 –

回答

2

According to MDN doc,你會怎麼做:

function childObj() { 
    google.maps.LatLng.call(this); 
} 

childObj.prototype = Object.create(google.maps.LatLng.prototype); 
childObj.prototype.constructor = Rectangle; 

但是,如果你想使用ES6成分,但仍然有ES5代碼更簡單的方法,就是用一個transpiler。例如babel可以做到這一點。

0

如果正確解釋的問題,你可以使用$.extend()

let opt = function opt(child) { 
      // set plain object without properties at first parameter to create 
      // new object, set plain object at last parameter 
      // to change properties at `data` 
      return $.extend({}, data.maps.LatLng, child, {additionalProp:child}); 
      } 
let option = new opt({lat:0,lng:1});