2016-11-11 102 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});