Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2010, 06:23
Аватар для Скриптор
Аспирант
Отправить личное сообщение для Скриптор Посмотреть профиль Найти все сообщения от Скриптор
 
Регистрация: 05.02.2010
Сообщений: 35

функция внутри объекта (не работает в IE)
o = {a:7, get b() {return this.a+1; }, set c(x) {this.a = x/2}};

alert( o.b )

alert( o.c )

Я потерялся:
Как добится подобного в IE? ( Mozilla работает идеально.)

Последний раз редактировалось Скриптор, 10.03.2010 в 06:29.
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2010, 07:05
Аватар для Скриптор
Аспирант
Отправить личное сообщение для Скриптор Посмотреть профиль Найти все сообщения от Скриптор
 
Регистрация: 05.02.2010
Сообщений: 35

И самый сок, что Mozilla при такой коде:
o = {
     'a':7,
     'b': function() { return this.a+1; }
   };

alert( o.b )
благополучно вешается,
а вот IE спокойно выдаёт "function() { return this.a+1; }" (хотя всё же от него требовалось это выполнить, а не строку выдавать!)
И eval() тут тоже не помогает... В общем, занятно оказалось!..
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2010, 11:51
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

o = {
  'a': 7,
  'b': function(){return this.a+1}
};	 
alert( o.b() )
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2010, 13:17
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Яваскриптовых геттеров и сеттеров в IE до 8 версии нет.
Варианта обхода этого два:
  1. VBScript. Объект, созданный vbs, доступен js, и в vbs есть-таки и геттеры и сеттеры. Вот, только, добавить свойств к таким элементам нельзя и прототипами они быть не могут, так что, считай, бесполезная вещь.
  2. DOM-элемент и onpropertychange. То-бишь, создаем коммент, прицепляем его к document, а потом при изменении любого из его свойств получим вызов события. Если не критично наличие «левых» свойств у объекта, то вполне юзабельно. Минусы: опять-таки, забудьте про прототипы, а если создадите пару тысяч таких объектов, то производительность Вас уже не порадует.

Как-то так…
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2010, 13:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Скриптор
хотя всё же от него требовалось это выполнить, а не строку выдавать!
Где это вы от него такое потребовали?
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2010, 16:44
Аватар для Скриптор
Аспирант
Отправить личное сообщение для Скриптор Посмотреть профиль Найти все сообщения от Скриптор
 
Регистрация: 05.02.2010
Сообщений: 35

2_ZoNT: Скобочки к функции оказались действительно не лишние. Ты отгадал!


2_subzey:
Цитата:
Яваскриптовых геттеров и сеттеров в IE до 8 версии нет.
Поверил. Проверил:
o = {a:7, get b() {return this.a+1; }, set c(x) {this.a = x/2}};  

 alert( o.b() )
Ослик (8-ая модель) всё равно упирается, пишет: Предполагается наличие знака ':'


2_Kolyaj:
Вобще-то это я так неумело пытался получить доступ к элементу ассоциативного массива, реализованного и виде такого объекта.
Как правильно в такой ситуации - до сих пор не знаю.
IE - ожидаемо выдает значение элемента такого массива (даже если внутри функция), а вот (тор)Mozilla - сама вешается!

o = {a:7, get b() {return this.a+1; }, set c(x) {this.a = x/2}};  

 alert( o.b() )
Можно ли для Мозиллы что-то наподобие
//
         alert( o.b.Value  )
// или 
         alert( value o.b  ) 
// навеяно конструкцией: 
//       alert( typeof o.b )
сочинить?

Последний раз редактировалось Скриптор, 10.03.2010 в 16:48.
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2010, 16:53
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ничего не вешается
o = {
     'a':7,
     'b': function() { return this.a+1; }
   };
 
alert( o.b )
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2010, 18:26
Аватар для Скриптор
Аспирант
Отправить личное сообщение для Скриптор Посмотреть профиль Найти все сообщения от Скриптор
 
Регистрация: 05.02.2010
Сообщений: 35

И верно! Спасибо.

Моя ошибка оказалась в том, что тестировал (вернее проверял) полагаясь на HTMLPad 2010 (фирма Blumentals). Потому что вешать саму МОЗИЛЛу было жалко: открыто до 70-ти вкладок, а заново их открывать потом - целая морока.

Там подобное наблюдается при повторном вызове режима просмотра того же кода во "встроенном" (эмулируемом) Мозилле у HTMLPad.

Держу его за более-менее приемлимое отображение Unicode в редакторе.
Так что забираю слова о тормознутость Мозиллы: это какой-то глюк в реализации HTMLPad. Буду искать замену.

Как насчет остальных ньюансов, Koljay?
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2010, 19:26
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Скриптор
вешать саму МОЗИЛЛу было жалко: открыто до 70-ти вкладок
Второй профиль.

Сообщение от Скриптор
Как насчет остальных ньюансов, Kolyaj?
Каких именно? У вас посты сумбурные.
Ответить с цитированием
  #10 (permalink)  
Старый 10.03.2010, 19:44
Аватар для Скриптор
Аспирант
Отправить личное сообщение для Скриптор Посмотреть профиль Найти все сообщения от Скриптор
 
Регистрация: 05.02.2010
Сообщений: 35

Цитата:
Каких именно? У вас посты сумбурные.
Хотя в принципе проблема уже разрешена: раз Мозилла работает. Это уже я туплю.

Цитата:
Второй профиль.
Это как? Я использую даже Менеджер сессий, но так это же каждый раз закрывать-открывать всё множество вкладок, а это требует времени (3-5 на закрытие-выгрузку Мозиллы, и столько же на открытие всего заново: 1 Гб оперативки). То есть при экспериментах и тестировании сомнительного или проблемного кода, я не очень могу себе это позволить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает тег <script> внутри тега <div>? serviom Общие вопросы Javascript 10 26.11.2011 01:24
Почему не работает функция? Vitaly jQuery 10 31.07.2009 17:01
Не работает функция Destrifer Элементы интерфейса 8 07.12.2008 01:34
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00
Не работает перебор свойств объекта BANick Общие вопросы Javascript 1 16.09.2008 22:46