Отражение свойств Javascript - PullRequest
       5

Отражение свойств Javascript

0 голосов
/ 30 декабря 2011

Прежде всего, позвольте мне предупредить вас, что я не гуру javascript.Я уже нашел несколько вопросов по этой теме, но почти все они отвечают тем же решением.У меня есть простой пользовательский объект javascript:

var errorMsg ={
      msg1 : "x",
      msg2 : "y",
      msg3 : "z",
      msg4 : "t"
}

, и я хочу получить все имена свойств из объекта, такие как ["msg1", "msg2", "msg3", "msg4"].Как я уже сказал, почти точка решения об использовании цикла for / in для перебора всех имен свойств.Но мое приложение будет работать в IE6 и выше, и я выяснил, что IE не поддерживает этот цикл или, по крайней мере, IE6.Так что я могу сделать ?Последний вопрос: где я могу найти хорошую ссылку на JavaScript?Я видел, что у объекта есть метод, который возвращает ключи, такие как Object.keys (), где я могу найти хорошую ссылку, которая дает мне все свойства и метод, связанные со встроенными объектами javascript?

Ответы [ 3 ]

0 голосов
/ 30 декабря 2011

Если опция for-in не включена, вы можете использовать массив, содержащий объекты сообщений . Вы можете использовать стандарт для цикла таким образом.

var errorMsg = [
      { name : "msg1", value : "x" },
      { name : "msg2", value : "y" },
      { name : "msg3", value : "z" },
      { name : "msg4", value : "t" }
];

Вы не можете получить доступ к сообщениям по имени, хотя - сопоставление имени сообщения с индексом в errorMsg может быть решением этой проблемы.

0 голосов
/ 30 декабря 2011

Вы можете определить универсальный метод для возврата массива ключей из любого объекта, и используйте метод вызова функции для работы с объектом errorMsg:

var errorMsg={
    msg1:"x",
    msg2:"y",
    msg3:"z",
    msg4:"t"
}
function keyArray(){
    var A= [];
    for(var p in this){
        if(this.hasOwnProperty(p)) A.push(p);
    }
    return A;
}
keyArray.call(errorMsg)

/*  returned value: (Array)
msg1,msg2,msg3,msg4
*/
0 голосов
/ 30 декабря 2011

Во-первых, см. Имеет ли Javascript улучшенный синтаксис цикла for, похожий на в Java, где мы только что обсуждали это. Но так как вы используете объект вместо массива, не все ответы будут применимы. Здесь вы хотите быть уверены, что вы используете решение, которое включает hasOwnProperty.

Для справки я всегда использую https://developer.mozilla.org/en/JavaScript/Reference. Все, что там указано, очень высокого качества. Просто помните, что не все из перечисленного будет одинаково применяться ко всем браузерам.

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