Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2012, 08:31
Профессор
Отправить личное сообщение для bot87 Посмотреть профиль Найти все сообщения от bot87
 
Регистрация: 16.05.2011
Сообщений: 307

почему не удаляется объект
function setName(obj) {
obj.names = 'Nicholas';
obj = new Object();
obj.xx ='Greg';
}
var person = new Object();
setName(person);
alert(person.names);

почуму остается доступным свойство names?Мы ведь его вроде должны удалить после obj = new Object();?
2.
<script>
function createPerson(name){
var localPerson = new Object();
localPerson.names = name;
return localPerson
}
createPerson('Nicholas');
alert(localPerson.names)//не работает
</script>
__________________
Я только учусь.Ногами просьба не бить

Последний раз редактировалось bot87, 14.05.2012 в 08:54.
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2012, 09:22
Аспирант
Отправить личное сообщение для skfyann Посмотреть профиль Найти все сообщения от skfyann
 
Регистрация: 27.12.2011
Сообщений: 90

Со вторым случаем все просто:
localPerson - локальная переменная, вы ее возвращаете, но нигде не используете, поэтому алерт и не работает. То есть, должно работать вот так:

var a = createPerson('Nicholas');
alert(a.names);
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2012, 09:25
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

function setName(obj) {
// здесь вы создаете новое свойство у объекта переданного через параметр
obj.names = 'Nicholas';

// здесь вы локально создаете новый объект
// тем самым ссылку на объект переданный аргументом, теряете
// но не заменяете объект тот что был передан аргументом
obj = new Object();
// задаете свойство новому локальному объекту
obj.xx ='Greg';
// при выходе из функции локальный объект будет уничтожен
}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2012, 09:32
Профессор
Отправить личное сообщение для bot87 Посмотреть профиль Найти все сообщения от bot87
 
Регистрация: 16.05.2011
Сообщений: 307

skfyann,devote спасибо!!Все понял
__________________
Я только учусь.Ногами просьба не бить
Ответить с цитированием
  #5 (permalink)  
Старый 14.05.2012, 15:22
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

В первом случае следствие из распространённого заблуждения, что объекты в JS передаются по ссылке. На самом деле, передаётся ссылка на объект, ссылка передаётся по значению, что не то же самое, что передача по ссылке.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не получается передать объект ui в функцию? CandyDandy Events/DOM/Window 1 26.03.2012 18:58
Страничка получает объект с null-значением от java-апплета JavaCommando Общие вопросы Javascript 1 27.11.2011 10:58
Передать ссылку на объект а не объект возникновения события Blazze Events/DOM/Window 0 11.10.2011 00:45
Почему не удаляется строка? Shaienn Общие вопросы Javascript 1 05.02.2009 09:20
почему не удаляется динамически созданный элемент? magistr_bender Элементы интерфейса 5 15.09.2008 19:52