Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: with(this)
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (1): [1] 

> Описание: почему не работает
kr12
Отправлено: 09 Апреля, 2006 - 01:26:34
Post Id


Member


Покинул форум
Сообщений всего: 136
Дата рег-ции: Март 2005  

Карма 0




CODE:

<body>
<script>
function a(){
with(this){ // ??
a=1;
}
this.b=2
this.getB=function(){
return this.b
}
}
a1=new a()
document.body.innerHTML+=a1.a+"<BR>"
document.body.innerHTML+=a1.getB()+"<BR>"
a1.a=11
document.body.innerHTML+=a1.a+"<BR>"
document.body.innerHTML+=a1.getB()+"<BR>"
</script>
 
 Top
ETC Администратор
Отправлено: 09 Апреля, 2006 - 04:42:08
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




kr12
ты переназначил функцию a на переменную a (могу ошибаться). И вообще, зачем with в данной конструкции?
 
 Top
Дмитрий Б.
Отправлено: 09 Апреля, 2006 - 05:15:30
Post Id



Super Member


Покинул форум
Сообщений всего: 800
Дата рег-ции: Март 2005  
Откуда: Иркутск

Карма 0




With видит в своём объекте только те свойства, которые уже были объявлены, что в JS делается только с помощью присваивания. Если ты в свой with перед a=1 запихнёшь строку this.a=0, то по окончании работы конструктора a() свойство a объекта будет содержать значение 1. Иначе это свойство вообще не будет иметься в объекте (можно проверить с помощью оператора for (A in B)). Зато, скажем, такой вариант:
CODE:
with(Math)a=floor(random()*b);

однозначно запишет в a случайное целое от 0 до b-1. Я понятно объяснил?
 
 Top
kr12
Отправлено: 09 Апреля, 2006 - 06:13:14
Post Id


Member


Покинул форум
Сообщений всего: 136
Дата рег-ции: Март 2005  

Карма 0




Да, спасибо.
 
 Top
Леголегс Администратор
Отправлено: 09 Апреля, 2006 - 06:40:19
Post Id



JS-маньяк


Покинул форум
Сообщений всего: 2109
Дата рег-ции: Июль 2004  
Откуда: Липецк

Карма 17




kr12
Дополню сказанное Дмитрием
CODE:
<script>
function a(){
with(this){ // ??
a=1;
}
}
a1=new a()
document.body.innerHTML+=a1.a+"<BR>"
document.body.innerHTML+=window.a+"<BR>"
</script>
Выведет
Цитата:
undefined
1
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« JavaScript »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.04]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33