【问题标题】:How to extend javascript class in ECMA5(IE11) ?如何在 ECMA5(IE11) 中扩展 javascript 类?
【发布时间】:2017-03-25 04:37:13
【问题描述】:

IE11 不支持 ECMA 脚本 6。 所以我不能在 IE11 中使用“类”语法。 那么,如何在IE11(ECMA5)中扩展obj呢?

//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 不是扩展,而是合并属性。 那么,如何在子类中调用父类构造函数呢?

【问题讨论】:

标签: javascript jquery ecmascript-6 ecmascript-5


【解决方案1】:

如果问题解释正确,您可以使用$.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});

【讨论】:

    【解决方案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 代码,一个更简单的解决方案是使用转译器。例如babel 就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 2020-10-01
      • 2013-02-18
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多