Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.03.2009, 02:16
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Цитата:
так подойдет?
Увы нет. Это совершенно разные объекты. Они не должны иметь ничего общего.

Хотя я уже думал над чем-то подобным. Но я хотел в прототип как-то "вплести" третий (вспомогательный) объект. Но пока не придумаю как...

Последний раз редактировалось no_alex, 20.03.2009 в 02:24.
Ответить с цитированием
  #12 (permalink)  
Старый 20.03.2009, 02:24
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

я исчерпался
Ответить с цитированием
  #13 (permalink)  
Старый 20.03.2009, 16:06
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

no_alex,

Если вы внутри функции 'A.t' откажетесь от той идеи, что значением 'this' должен быть исключительно объект 'A' и станете обращаться к нему по имени, то можно уйти от аргумента в пользу версии с 'apply' или её более упрощённого собрата. Это если вы не хотите кого-то инструктировать про аргумент...

C другой стороны, вариант с передачей аргумента вряд ли можно назвать "нагружающим" процесс создания объектов, прототип создаётся один раз, вычисление значения 'this' в момент вызова мгновенное и т.д. Что касается варианта с 'caller', то это не кроссбраузерное решение, к тому же само свойство 'deprecated'...
Ответить с цитированием
  #14 (permalink)  
Старый 20.03.2009, 17:59
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Цитата:
Если вы внутри функции 'A.t' откажетесь от той идеи, что значением 'this' должен быть исключительно объект 'A'
Там так не получится. Это здесь, в качестве примера, я показал A, как один простой объект. На самом деле, у меня таких обектов будет несколько и каждый со своим законченным функционалом. Именно поэтому мне нельзя их "переплетать" между собой и this там должен обязательно указывать на "оригинал".

Цитата:
вариант с передачей аргумента вряд ли можно назвать "нагружающим" процесс создания объектов
Не скажу чтобы оно сильно нагружало, но если бы можно было его убрать, было-бы хорошо. Сейчас у меня такие вызовы (с "this") всречаются примерно в каждой ~5-10 строке.

Цитата:
с 'caller', то это не кроссбраузерное решение
Действительно старая Opera 8.53 его не понимает.
В остальных браузерах:
- FF2, FF3 и другие браузеры на мозилловском движке (NN, Flock);
- IE6, IE7;
- Opera 9;
- Safari;
- Google Chrome;
нормально отрабатывает.
Я думаю, что если речь идет только об Opere 8 и ниже, то на это можно "забить".

Цитата:
к тому же само свойство 'deprecated'
Вот это уже заставляет задуматься! Можете показать где это написано?
Ответить с цитированием
  #15 (permalink)  
Старый 20.03.2009, 21:37
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от no_alex
если речь идет только об Opere 8 и ниже
Боюсь ошибиться, но свойство 'Function.caller' появилось очень давно, где-то в JavaScript 1.1, в JScript соответственно следом. Позднее в JavaScript 1.2 добавили свойство 'arguments.caller', которое в следующей же версии от страха прибили (вот оно как раз открытым текстом deprecated в JavaScript 1.3). При этом свойство 'Function.caller' из offline-спеков JavaScript выпало вообще (deprecated закрытым текстом), вы его найдёте только в новомодной редактируемой MDC, B.Eich объяснял пропажу так:

All traces of a caller property were removed a while ago, to follow ECMA-262 and to avoid any chance of a security exploit. The removal seems to me to have been overzealous, because it axed the caller property of function objects *and* the much-more-exploitable caller (or __caller__) property of activation objects.

В общем, в основных движках свойство сидит с прошлого века, но в одном из них временно отстутствовало, выпадая из спеков. Все остальные традиционно бедны последовательной документацией, в Opera точно не было долго (помню был такой вопрос на винграде), в Safari ещё труднее сказать... свойство вне стандарта, редко используемое, может взбрыкнуть.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00
Получение ссылки на объект из метода Octane Общие вопросы Javascript 7 21.08.2008 15:09