Как получить ключевое слово переменной вместо значения переменной - PullRequest
0 голосов
/ 13 ноября 2011

Я создал функцию для печати объекта или массива, это печатает имя свойства и значения в порядке, но я не могу понять, как я могу напечатать intead "testobject" объекта "в первой строке выход.

часть функции

function expandNode(obj) {
    for (var node in obj) {
        text += node + " => " + obj[node] + "<br>";  //keyword => value
    }
    return (text);
}

Exemple

var testobject={};
testobject["car"]="toyota";
testobject["instrument"]="piano";
testobject["computer"]="macintosh";
document.write( printO(testobject) );

вывод

object
(
    car => toyota
    instrument => piano
    computer => macintosh
)

Ответы [ 2 ]

1 голос
/ 13 ноября 2011

невозможно.Единственное, что вы можете сделать, это также передать имя переменной:

printO('someVar', someVar);

Нет необходимости говорить, что это крайне уродливо, поэтому лучше вообще не делать этого.


Поскольку в другом ответе предлагалось передать только имя и использовать eval для доступа к значению: это будет работать для глобальных переменных, но в этом случае лучше было бы использовать не eval, а оператор [] для глобального объекта (window или this).Поскольку невозможно получить доступ к значению из локальной области, хотя нет хорошего способа заставить вашу функцию принимать только имя переменной.

0 голосов
/ 13 ноября 2011

К сожалению, это невозможно в Javascript.Лучшее, что вы могли бы сделать, это передать имя переменной в виде строки и затем использовать eval() для доступа к фактической переменной:

function printO(obj_str) {
  alert("The variable name is " + obj_str);
   obj = eval(obj_str);
}

См. Также этот вопрос: Как преобразовать имя переменнойв строку JavaScript?

Редактировать: Фактически, вышеупомянутое решение не будет работать;см. обсуждение ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...