2016-02-18 2 views
0

Метод, который я использую в Tone.js, требует строк как аргументов. Есть ли способ назначить переменные вверху, а затем сохранить их в кавычках?преобразовать значение переменной в строку в javascript

Это обозначение, которое работает:

var chain = new Tone.CtrlMarkov({ 
"D2": "D4", 
"D4": ["D2","D3"], 
"D3":"D2" 
}); 

Это то, что я хочу сделать (и я попробовал все комбинации, используя цитаты, против нет, или с помощью метода val1.toString()

var val1 = "D2"; //trying using quotes 
var val2 = D4; //trying not using quotes 
var val3 = D3; 

var chain = new Tone.CtrlMarkov({ 
val1: val2, 
val2: [val1,val3], 
val3.toString(): val1 //trying toString method 
}); 

Thx! документация библиотеки является here и мой jsfiddle является here

+0

'{...} 'является буквальным обозначение для объекта ** **. –

ответ

3

Здесь { val1: .., val2: ..., val3: .. }, var1, var2 и var3 - это имена свойств буквально, то компилятор будет использовать их в качестве литералов (т. а не значения переменных). Так что это не сработает.

Вы можете использовать обозначение object[property].

Ваш код перевода:

var var1 = "D1"; 
var var2 = "D2"; 
var var3 = "D3"; 

// create a empty object 
var obj = {}; 

// fill the object with the data using the object[property] 
obj[var1] = var2; // this is equal to obj.D1 = "D2" 
obj[var2] = [ var2, var3 ]; // this is equal to obj.D2 = [ "D1", "D3" ] 
obj[val3] = var1; // this is equal to obj.D3 = "D1" 

// then use the object. 
ar chain = new Tone.CtrlMarkov(obj); 
Смежные вопросы