src/options/decorator.js
function hoistingOptions( target ) {
    if ( !target.hasOwnProperty( '_options' ) ) {
        let options;
        if ( undefined === target._options ) {
            options = {};
        } else {

            // Create copy with descriptors
            options = Object.create(
                null,
                Object.getOwnPropertyDescriptors( target._options )
            );
        }
        Object.defineProperty( target, '_options', {
            value: options,
            enumerable: false,
            configurable: true
        } );
    }
}
function hoistingOptions( target ) {
    if ( !target.hasOwnProperty( '_options' ) ) {
        let options;
        if ( undefined === target._options ) {
            options = {};
        } else {

            // Create copy with descriptors
            options = Object.create(
                null,
                Object.getOwnPropertyDescriptors( target._options )
            );
        }
        Object.defineProperty( target, '_options', {
            value: options,
            enumerable: false,
            configurable: true
        } );
    }
}
function hoistingOptions ( target ) { if ( ! target . hasOwnProperty ( '_options' ) ) { let options ; if ( undefined === target . _options ) { options = { } ; } else { // Create copy with descriptors options = Object . create ( null , Object . getOwnPropertyDescriptors ( target . _options ) ) ; } Object . defineProperty ( target , '_options' , { value : options , enumerable : false , configurable : true } ) ; } }
Hoisting options in prototype chain
@param {Object} target
Hoisting options in prototype chain