Это возможно - своего рода, как это немного сложнее.
Это все начинается с понимания области действия переменной. Давайте посмотрим на основной, простой пример:
var myvar = 'I see';
Это создает, по Название переменной базового уровня по имени myvar
, что вы можете получить доступ к такой как alert(myvar);
, который будет, в этом случае предупреждение «Я вижу».
Что это действительно значит, так это создать свойство на объекте окна. Таким образом, var myvar = 'I see';
совпадает с window['myvar'] = 'I see';
.
Сложные объекты также могут быть созданы таким образом.
еще несколько примеров:
window['fred'] = 'howdy fred';// create fred property
var regularfred = 'howdy fred'; // create regularfred property
window['town'] = {}; // create town object
window['town']['george'] = 'georgetown'; //create town.george property
alert(fred + ":" + regularfred); // alerts "howdy fred:howdy fred"
alert(fred == regularfred);// alerts true
alert(this['town']['george']);// alerts "georgetown"
function createvar(a, b) {
this[a + 'name' + b] = "fredling";
alert(this[a + 'name' + b]);// alerts "fredling"
alert(window[a + 'name' + b]);// alerts "fredling"
}
var hi = 'hi';
var lo = 'loook';
createvar(hi, lo);
alert(this[hi + 'name' + lo]);// alerts "fredling"
Requisit рабочий пример на это: http://jsfiddle.net/pGWZN/
Вы всегда можете создать на лету переменную в JS, почему вы хотите функцию? –
Зачем вам нужны переменные имена? Как правило, гораздо проще использовать доступ к хэш-стилю, который вы можете получить от голого объекта. – Gareth
Не жалейте о том, чтобы задавать, по-видимому, основной вопрос. Если вы нуждаетесь в спросе, другие, скорее всего, будут заинтересованы. Это только хмурится, если вы спросите плохо, или если ваш вопрос не показывает никаких признаков усилий, чтобы объяснить это. Поэтому не делайте этого самоуничижительного танца и сразу же задавайте свой вопрос. – k0pernikus