Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.08.2012, 14:58
Аспирант
Отправить личное сообщение для Nubi Посмотреть профиль Найти все сообщения от Nubi
 
Регистрация: 06.08.2008
Сообщений: 43

Пердача функции по ссылке. Где подвох?
Всем привет!

К примеру, есть такой код:

function message (msg) {
    alert(msg);
}                           
var newMessage = message;        
message = null;        
newMessage("Hello!");

К сожалению не нашел как тут вставить код, что бы посетители могли его запустить, но не в этом суть.

Прошу объясните на пальцах такое поведение. Известно, что функции передаются по ссылке (поскольку они суть объекты). В данном случае идентификаторы message и newMessage это просто указатели на одну и ту же функцию. Почему когда я затираю один указатель (message = null) функция все еще доступна по второму указателю. Ведь по идее если я изменяю один указаетель, это должно отражаться и на всех остальных указателях. Но, по-моему я это не правильно понимаю... А что тут происходит на самом деле ?
Ответить с цитированием
  #2 (permalink)  
Старый 22.08.2012, 15:12
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

Nubi,
когда вы пишите
message = null;

вы затираете лишь ссылку на функцию у этой переменной, а другая до сих пор ссылается на функцию пример:
function message (msg) {//в переменной message ссылка на эту функцию
    alert(msg);
}                          
var newMessage = message;   // у переменной newMessage ссылка на функцию, а не ссылка на ссылку переменной message   
message = null;//затираем ссылку в переменной message
newMessage("Hello!");//а переменная newMessage до сих пор ссылается на функцию, а не ссылку переменной message
Ответить с цитированием
  #3 (permalink)  
Старый 22.08.2012, 15:19
Аспирант
Отправить личное сообщение для Nubi Посмотреть профиль Найти все сообщения от Nubi
 
Регистрация: 06.08.2008
Сообщений: 43

Dim@,
Спасибо, теперь понятно
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать переменные по ссылке href в разные функции izcian Общие вопросы Javascript 3 22.08.2012 19:31
подключение функции js по ссылке DmitryT Элементы интерфейса 2 06.06.2011 08:34
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21