How to define a function with dynamical name Back

Sometimes, we may meet the case when we need to initialize a function with dynamical name, especially when we want to implement Class extending in JavaScript. Therefore, we may need to know the working around of this problem according to https://stackoverflow.com/a/28665860.

function nameFunction(name, functionBody) {
    return name ?
        new Function ('cb', 'return function '
            + name
            + '(cb) { return cb.call(this, arguments); }')
        : body;
}

Then, we can use this function to implement extending Class under ES5:

function nameFunction(name, functionBody) { /** ... */ }
function extendClass(parent, name, prototype, initialize, callSuper) {
    var constructor = nameFunction(name, function () {
        var self = (this instanceof constructor) ?
            this
            : Object.create(constructor.prototype);
        self = (callSuper && parent.apply(self, arguments)) || self;
        return (initialize && initialize.apply(self, arguments)) || self;
    });

    constructor.prototype = Object.assign(Object.create(parent.prototype), prototype);
    constructor.prototype.constructor = constructor;
    return constructor;
}

results matching ""

    No results matching ""