Чтение Object Literal в JS с результатом функции - PullRequest
0 голосов
/ 30 января 2011

У меня есть литерал объекта:

var content = {
    classname1:"content",
    classname2:"content"
}

Доступ к этому способу content.classname1 прост.Но я не хочу указывать classname1 вместо использования функции, чтобы получить это имя класса и передать его моему объекту:

function getMyClass {
 // some code
 return myclass;
}

content.myclass 

, где myclass - это результат функции.Но это не работает.Я не знаю, как объединить content. с результатом функции.

Справочная информация: я хочу, чтобы на моем сайте почти всегда отображались подсказки.Таким образом, одна функция должна выяснить класс элемента и затем отобразить его содержимое, связанное с ним из литерала объекта.Так что управлять именем класса и содержимым было бы довольно просто.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 30 января 2011

obj.property является синтаксическим сахаром для obj['property']

Вы можете получить доступ к членам объекта, используя нотацию [] вместо точечной нотации. Если вы используете скобки, то вы можете поместить все, что оценивается, в строку между скобками. Это позволяет динамически указывать свойства или использовать имена свойств, которые не являются допустимыми идентификаторами JavaScript ... например obj['2nd property']

Итак, попробуйте:

content[getMyClass()]

0 голосов
/ 30 января 2011

Если вы хотите использовать функцию (возможно, есть больше логики, чем просто выбор значения свойства), вот один из способов:

var content = {
  classname1:"contentbbbb",
  classname2:"contentaaaa",
  getClassName : function(which){
    // do stuff, check things
    return this[which];
  }
}

Тогда у вас будет:

content.getClassName('classname1'); // returns 'contentbbbb'
0 голосов
/ 30 января 2011
function getMyClass {
    // some code
    return "myclass";
}

content["myclass"];

Это может быть то, что вы ищете. Ваш вопрос немного расплывчатый.

В качестве альтернативы вы можете попробовать:

for (var key in content) {
    if (content.hasOwnProperty("key")) {
         addContent(key, content[key]);
    }
}

function addContent(className, content) {
    // do stuff
}
...