2016-11-11 3 views
1

IE11はECMAスクリプト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

を使用できる場合-Classes – skav

+2

http://babeljs.io/repl/を使用する - 左側にコードを貼り付ける - 右側のコード –

+0

をコピーすると、es6クラスがes5 http:// stackoverflowにどのようにコンパイルされているかを説明することができます。 com/a/35776188/2379922 –

答えて

2

According to MDN docは、あなたがどうなる:あなたはES6コンポーネントを使用したいが、まだES5コードを持っている場合

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

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

しかし、簡単な解決策を、transpilerを使用することです。たとえば、babelがそのトリックを行います。

0

正しく質問を解釈し、あなたはhttps://scotch.io/tutorials/better-javascript-with-es6-pt-ii-a-deep-dive-intoこれを読ん$.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}); 
関連する問題