我希望能夠創建使用函數變量,像:如何使用Javascript函數來命名變量?
function createVar(a,b){
var [a]name[b];
}
所以,如果我把我結束了一個名爲prefixnamesuffix
變量的函數createVar(prefix,suffix)
。
我希望能夠創建使用函數變量,像:如何使用Javascript函數來命名變量?
function createVar(a,b){
var [a]name[b];
}
所以,如果我把我結束了一個名爲prefixnamesuffix
變量的函數createVar(prefix,suffix)
。
您不能以這種方式創建局部變量,但可以使用字符串創建屬性。
function createVar(obj, a, b)
{
obj[a+'name'+b] = foo;
}
打我一頭髮。我只是補充一點,你還可以通過附加屬性到'window'對象來創建全局變量:'window [a +'name'+ b]' – jackwanders
絕對完美!我的腳本現在正在工作。感謝你們兩位的快速幫助。 – BiscuitBaker
如果解決方案有效,我相信丹尼爾會很樂意接受他的答案。 – jackwanders
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';
這將創建一個varaible,在一個名爲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