Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   почему не удаляется объект (https://javascript.ru/forum/misc/28292-pochemu-ne-udalyaetsya-obekt.html)

bot87 14.05.2012 08:31

почему не удаляется объект
 
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>

skfyann 14.05.2012 09:22

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

var a = createPerson('Nicholas');
alert(a.names);

devote 14.05.2012 09:25

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

// здесь вы локально создаете новый объект
// тем самым ссылку на объект переданный аргументом, теряете
// но не заменяете объект тот что был передан аргументом
obj = new Object();
// задаете свойство новому локальному объекту
obj.xx ='Greg';
// при выходе из функции локальный объект будет уничтожен
}

bot87 14.05.2012 09:32

skfyann,devote спасибо!!Все понял :)

Kolyaj 14.05.2012 15:22

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


Часовой пояс GMT +3, время: 04:32.