var string = 'object.data.path';
字符串作爲對象變量的對象引用
這是一個類似於變量路徑的字符串。
如何從該字符串返回相應的變量?
喜歡的東西轉化串入return object.data.path;
這背後的事情是該字符串可能是更長的時間(深),如:
var string = 'object.data.path.original.result';
var string = 'object.data.path';
字符串作爲對象變量的對象引用
這是一個類似於變量路徑的字符串。
如何從該字符串返回相應的變量?
喜歡的東西轉化串入return object.data.path;
這背後的事情是該字符串可能是更長的時間(深),如:
var string = 'object.data.path.original.result';
function GetPropertyByString(stringRepresentation) {
var properties = stringRepresentation.split("."),
myTempObject = window[properties[0]];
for (var i = 1, length = properties.length; i<length; i++) {
myTempObject = myTempObject[properties[i]];
}
return myTempObject;
}
alert(GetPropertyByString("object.data.path"));
這是假定你的第一個(在這種情況下,稱爲object
是全球性的) 或者,雖然不推薦,但可以使用eval
函數。
假設你不想只是使用eval
你可以嘗試這樣的事:
function stringToObjRef(str) {
var keys = str.split('.'),
obj = window;
for (var i=0; i < keys.length; i++) {
if (keys[i] in obj)
obj = obj[keys[i]];
else
return;
}
return obj;
}
console.log(stringToObjRef('object.data.path.original.result'));
使用for循環去下一層的時間,返回undefined如果鏈中的一個特定的鍵未定義。
字符串從哪裏來? – Dennis
HTML5數據屬性名稱,破折號用點代替。 – jolt