funciones dinamicas array alternativa javascript function dynamic names

dinamicas - javascript>: eval



Javascript: nombres de funciones dinĂ¡micas (2)

Esta pregunta ya tiene una respuesta aquí:

¿Cómo crear una función con un nombre dinámico? Algo como:

function create_function(name){ new Function(name, ''console.log("hello world")''); } create_function(''example''); example(); // --> ''hello world''

Además, la función debe ser un objeto de función para poder modificar el prototipo del objeto.


He estado jugando con esto durante las últimas 3 horas y finalmente lo he conseguido al menos un poco elegante usando la nueva función como se sugiere en otros hilos:

/** * JavaScript Rename Function * @author Nate Ferrero * @license Public Domain * @date Apr 5th, 2014 */ var renameFunction = function (name, fn) { return (new Function("return function (call) { return function " + name + " () { return call(this, arguments) }; };")())(Function.apply.bind(fn)); }; /** * Test Code */ var cls = renameFunction(''Book'', function (title) { this.title = title; }); new cls(''One Flew to Kill a Mockingbird'');

Si ejecuta el código anterior, debería ver el siguiente resultado en su consola:

Book {title: "One Flew to Kill a Mockingbird"}


window.example = function () { alert(''hello world'') } example();

o

name = ''example''; window[name] = function () { ... } ...

o

window[name] = new Function(''alert("hello world")'')