Может ли функция вызываться с использованием строкового значения в строгом режиме
Мне было интересно, можно ли вызвать функцию, передав имя строки. Ниже приводится базовая архитектура:
Javascript:
"use strict";
function foo(){
var f = this;
f.fn = function(o){return fn(o)}
function fn(o){
o.name();
}
function a(){
alert('a');
}
function b(){
alert('bb');
}
}
var f = new foo();
f.fn({name:'a'});
f.fn({name:'b'});
Код настраивается по адресу http://jsfiddle.net/rexonms/9c7bnkc9/.
1 ответ
Вы можете достичь этого, используя eval
:
function foo(){
var f = this;
f.fn = function(o){return fn(o)}
function fn(o){
eval(o.name + '()');
}
function a(){
alert('a');
}
function b(){
alert('bb');
}
}
var f = new foo();
f.fn({name:'a'});
f.fn({name:'b'});
Вот jsFiddle: http://jsfiddle.net/9c7bnkc9/2/