babel/packages/babel-plugin-transform-es2015-object-super
Justin Ridgewell 3e487f89ab Don't merge test options. (#6157)
* Don't merge test options.

Particularly, I don't want `lodash/merge` to merge my specific plugins
with the general test plugins. It led to odd behavior where I could
enable a loose transform in my specific test, just to have it overridden
by the test fixture's general options.

* Need options
2017-08-28 13:36:03 -06:00
..
2017-06-27 12:15:00 -05:00
2017-08-28 13:36:03 -06:00
2017-03-25 21:46:16 -04:00
2017-08-07 18:21:08 -04:00

babel-plugin-transform-es2015-object-super

Compile ES2015 object super to ES5

Examples

In

let obj = {
  say () {
    return "Hello"
  }
}

let obj2 = {
  say () {
    return super.say() + "World!"
  }
}

Out

var _obj;

var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };

var obj = {
  say: function say() {
    return "Hello";
  }
};

var obj2 = _obj = {
  say: function say() {
    return _get(_obj.__proto__ || Object.getPrototypeOf(_obj), "say", this).call(this) + "World!";
  }
};

Installation

npm install --save-dev babel-plugin-transform-es2015-object-super

Usage

.babelrc

{
  "plugins": ["transform-es2015-object-super"]
}

Via CLI

babel --plugins transform-es2015-object-super script.js

Via Node API

require("babel-core").transform("code", {
  plugins: ["transform-es2015-object-super"]
});