Операторы-аксессоры предоставляют доступ к свойствам объекта.
Объект представляет собой обычный ассоциативный массив (словарь, хэш). Ключами этого массива являются имена свойств и методов (свойств, являющихся ссылкой на функцию).
Есть два способа доступа к свойствам: запись с точкой или с квадратными скобками.
get = object.property // получить свойство property object.property = set // записать свойство property
Для записи с точкой название свойства должно быть правильным javascript-идентификатором, то есть последовательностью английских букв и цифр, включая подчеркивание "_" и знак доллара "$", которая не начинается с числа.
Например, object.1ドル - корректный идентификатор, а object.1 - нет.
document.createElement('pre')
В этом примере из объекта document получено свойство createElement, которое является ссылкой на функцию. Эта функция вызвана с аргументом 'pre' в контексте объекта document.
get = object[property_name] // получить object[property_name] = set // записать
Здесь property_name - строка. Она не обязательна является правильным идентификатором. Может быть любое значение, включая цифры и даже " " (пробел).
document['createElement']('pre')
Этот пример делает в точности то же самое, что и аналогичный предыдущий.
eval В старых javascript-скриптах иногда используется доступ к свойствам объекта через eval, в то время как гораздо быстрее и правильнее использовать запись с квадратными скобками.
Например, часто попадается такая запись:
x = eval('document.form_name.' + strFormControl + '.value')
Следует максимально избегать вызова eval. Лучше использовать скобочную запись:
x = document.form_name[strFormControl].value
| Поиск по сайту |
| Последние темы на форуме |
Forum |
По поводу eval.
Можно ли обойтись без него в такой ситуации:
function Obj() { this.firstFucn = function() { return 'yo'; } this.secondFunc = function() { return 'yo2'; } } var obj = new Obj(); var functions = ['first', 'second']; eval('obj.' + functions[0] + 'Func()'); eval('obj.' + functions[1] + 'Func()');Конечно, можно:
var obj = { firstFunc: function(){ return 'yo' }, secondFunc: function(){ return 'yo2' } }, functions = ['first', 'second'] obj[functions[0]+'Func']() obj[functions[1]+'Func']()Хороший перевод, спасибо. Кому интересно - оригинал статьи здесь.