Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.07.2012, 15:13
Новичок на форуме
Отправить личное сообщение для bartwell Посмотреть профиль Найти все сообщения от bartwell
 
Регистрация: 17.07.2012
Сообщений: 3

Перехват вызова несуществующего метода класса
Возможно ли в Javascript перехватить вызов несуществующего метода? Например, в PHP для этого имеется "магический" метод __call(). А как это реализовать в JS?
Ответить с цитированием
  #2 (permalink)  
Старый 17.07.2012, 15:16
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от bartwell Посмотреть сообщение
Возможно ли в Javascript перехватить вызов несуществующего метода?
К сожаленью, нет
Ответить с цитированием
  #3 (permalink)  
Старый 17.07.2012, 15:27
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Ждем Proxy
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #4 (permalink)  
Старый 17.07.2012, 15:50
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

а почему бы не так

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>

    <script>

      function __call(obj){
      
        try{
        
         obj();
        } catch(e){
        
          alert('такого метода нет');
         
        }
      
      }
      
      var O = {
        new_ :function (){
        
          alert('new');
        }
      };
  __call(O.new_);
      
  __call(O.bla);    
    </script>

  </body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2012, 16:37
Новичок на форуме
Отправить личное сообщение для bartwell Посмотреть профиль Найти все сообщения от bartwell
 
Регистрация: 17.07.2012
Сообщений: 3

cyber, спасибо за вариант. К сожалению, мне этот метод не подходит - методы должны вызываться как обычно, т.е., просто class.method();
Ответить с цитированием
  #6 (permalink)  
Старый 17.07.2012, 16:40
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

ну на сколько я знаю такое не возможно на js ,если я ошибаюсь поправьте
Ответить с цитированием
  #7 (permalink)  
Старый 17.07.2012, 16:44
Новичок на форуме
Отправить личное сообщение для bartwell Посмотреть профиль Найти все сообщения от bartwell
 
Регистрация: 17.07.2012
Сообщений: 3

Печально. Но, спасибо всем за ответы. Буду искать другое решение.
Ответить с цитированием
  #8 (permalink)  
Старый 17.07.2012, 20:33
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от cyber
ну на сколько я знаю такое не возможно на js ,если я ошибаюсь поправьте
такое возможно, но только в FF используя объект Proxy, в других браузерах пока этого нет. Proxy добавлен в спецификацию ES6 поэтому ждать боюсь еще прилично придется.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #9 (permalink)  
Старый 17.07.2012, 21:10
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от devote Посмотреть сообщение
такое возможно, но только в FF используя объект Proxy, в других браузерах пока этого нет. Proxy добавлен в спецификацию ES6 поэтому ждать боюсь еще прилично придется.
вполне возможно скоро появится в хроме, а вот с остальными браузерами да печально..
Ответить с цитированием
  #10 (permalink)  
Старый 17.07.2012, 22:10
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от cyber
вполне возможно скоро появится в хроме, а вот с остальными браузерами да печально..
ну оно еще в черновиках, толком еще не допилено.. сомневаюсь что хром это внедрит в ближайшее время. Так как им часто придется переделывать из-за изменений в спецификации, пока черновик во что-то дельное не превратится.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свойства/методы класса TicTac Общие вопросы Javascript 5 03.07.2011 14:53
Как внутри класса вызвать метод из соседнего метода Shahurik Общие вопросы Javascript 2 13.11.2009 12:20
Переопределение метода базового класса walash jQuery 18 15.07.2009 17:05