почему не удаляется объект
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>
|
Со вторым случаем все просто:
localPerson - локальная переменная, вы ее возвращаете, но нигде не используете, поэтому алерт и не работает. То есть, должно работать вот так:
var a = createPerson('Nicholas');
alert(a.names);
|
function setName(obj) {
// здесь вы создаете новое свойство у объекта переданного через параметр
obj.names = 'Nicholas';
// здесь вы локально создаете новый объект
// тем самым ссылку на объект переданный аргументом, теряете
// но не заменяете объект тот что был передан аргументом
obj = new Object();
// задаете свойство новому локальному объекту
obj.xx ='Greg';
// при выходе из функции локальный объект будет уничтожен
}
|
skfyann,devote спасибо!!Все понял :)
|
В первом случае следствие из распространённого заблуждения, что объекты в JS передаются по ссылке. На самом деле, передаётся ссылка на объект, ссылка передаётся по значению, что не то же самое, что передача по ссылке.
|
| Часовой пояс GMT +3, время: 23:12. |