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

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

Strict Standards: Resource ID#33 used as offset, casting to integer (33) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: with(this)
ТвойWeb » WebMaster класс » JavaScript » with(this)

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

1. kr12 - 09 Апреля, 2006 - 01:26:34 - перейти к сообщению
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>
2. ETC - 09 Апреля, 2006 - 04:42:08 - перейти к сообщению
kr12
ты переназначил функцию a на переменную a (могу ошибаться). И вообще, зачем with в данной конструкции?
3. Дмитрий Б. - 09 Апреля, 2006 - 05:15:30 - перейти к сообщению
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. Я понятно объяснил?
4. kr12 - 09 Апреля, 2006 - 06:13:14 - перейти к сообщению
Да, спасибо.
5. Леголегс - 09 Апреля, 2006 - 06:40:19 - перейти к сообщению
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

Форум на AlfaSpace.NET


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

[Script Execution time: 0.0377]     [ 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