What is @babel/plugin-transform-object-super?
The @babel/plugin-transform-object-super package is a plugin for Babel, a JavaScript compiler, that allows the transformation of super calls in object methods. This is particularly useful when using the object method shorthand syntax in ES2015 (ES6) and beyond, where you might want to call a method of the same name from the superclass. This plugin ensures that such super calls are correctly transformed to function in environments that do not support this feature natively.
What are @babel/plugin-transform-object-super's main functionalities?
Transforming super calls in object methods
This feature allows you to use 'super' in object methods to call a method of the same name from the superclass. The plugin will transform this code to be compatible with environments that do not support this syntax natively.
{"object": {"method": function() { super.method(); }}}
Other packages similar to @babel/plugin-transform-object-super
@babel/plugin-transform-classes
This package transforms ES2015 classes to ES5. It is similar to @babel/plugin-transform-object-super in that it deals with class inheritance and super calls, but it focuses on class syntax rather than object method shorthand syntax.
babel-plugin-transform-es2015-object-super
This package is a legacy plugin that was used to transform super calls in object methods for ES2015. It has similar functionality to @babel/plugin-transform-object-super but is now deprecated in favor of the scoped @babel packages.
@babel/plugin-transform-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-object-super
Usage
Via .babelrc
(Recommended)
.babelrc
{
"plugins": ["@babel/transform-object-super"]
}
Via CLI
babel --plugins @babel/transform-object-super script.js
Via Node API
require("@babel/core").transform("code", {
plugins: ["@babel/transform-object-super"]
});