我希望能够使用函数创建变量,例如:
function createVar(a,b){
var [a]name[b];
}
因此,如果我调用该函数createVar(prefix,suffix)
,我最终会得到一个名为prefixnamesuffix
.
我希望能够使用函数创建变量,例如:
function createVar(a,b){
var [a]name[b];
}
因此,如果我调用该函数createVar(prefix,suffix)
,我最终会得到一个名为prefixnamesuffix
.
您不能以这种方式创建局部变量,但可以使用字符串创建属性。
function createVar(obj, a, b)
{
obj[a+'name'+b] = foo;
}
function createVar(a, b, value) {
// declare the variable on current context(default is window),
// and set value, default is undefined
this[a + 'name' + b] = value;
}
用于:
createVar('a', 'b');
// variable anameb now is declare, but it's value is undefined
console.log(anameb); // -> undefined
createVar('prefix', 'suffix', 'optional');
// variable prefixnamesuffix now is exist in window
console.log(prefixnamesuffix); // -> 'optional'
或者:
var obj = {};
createVar.call(obj, 'pre', 'suf', 'defValue');
// variable prenamesuf is now exist in obj, but not exist in window
console.log(obj.prenamesuf); // -> 'defValue'
console.log(prenamesuf); // ReferenceError: prenamesuf is not defined
这是可能的——有点棘手。
这一切都始于了解变量的范围。让我们看一个基本的简单示例:
var myvar = 'I see';
这将创建一个名为myvar
您可以访问的基本级别的变量,例如alert(myvar);
which will,在这种情况下,警报“我看到了”。
这实际上是在 window 对象上创建一个属性。因此,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"
要求工作示例:http: //jsfiddle.net/pGWZN/