Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript: вопросы по объектам ... / 13 сообщений из 13, страница 1 из 1
05.03.2009, 17:16
    #35854022
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
Есть код Примера :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
var e;
function Circle(radius) {
  this.radius = radius;
  e=(this instanceof FullCircle);
}

Circle.prototype.area = function() {
 // e=(this instanceof FullCircle);
  return Math.PI * this.radius * this.radius;
}

function FullCircle(x, y, radius) {
  this.x = x;
  this.y = y;
  this.radius = radius;
  this.mm=M();
 //  e=(this instanceof FullCircle);
   WScript.Echo((this instanceof FullCircle)+"^");
}
function M() {WScript.Echo((this instanceof Object)+"*");}

FullCircle.prototype = Circle.prototype;

var myCircle = new FullCircle( 0 ,  0 ,  1 );
//var myM = new M();
WScript.Echo(e +"|");

Результаты :

false*
true^
undefined|

Вопросы :

1) Почему пока не раскоментирована строка //var myM = new M(); в Резултатах имеем false* Т.е. почему нужно инициализировать объект, ведь функция сама по себе является объектом?

2) Как из метода объекта обратиться к объекту (this в методе mm не прокатывает) и как к его родителю?

3) Почему в методах родительского объекта Circle не инициализируя родительский объект явно , а только создавая дочерний объект FullCircle нельзя изменить значения переменных вне тела метода ( var e; дает undefined в Результатах ) ?
...
Рейтинг: 0 / 0
06.03.2009, 13:00
    #35855733
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
kefi
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function FullCircle(x, y, radius) {
   this.x = x;
   this.y = y;
   this.radius = radius;
  this.mm=M();
  //  e=(this instanceof FullCircle);
    WScript.Echo((this instanceof FullCircle)+"^");
}

function M() {WScript.Echo((this instanceof Object)+"*");}

this в первом и втором случае - разный: в первом случае this - это FullCircle, а, во втором, - window. Возьмите сами debugger и проверьте.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
06.03.2009, 20:19
    #35856717
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
Ex_Soft
this в первом и втором случае - разный: в первом случае this - это FullCircle, а, во втором, - window.
Так в контексте 1-го поста непонятно "почему" так - видимо, пока функция не вызвана (var myM = new M(); или myCircle.mm() - кстати- не вызывается что-то ? ?????? ), она как экземпляр объекта, на который this мог юы вернуть ссылку, не имеет места быть ;
, ну и - остальные вопросы тоже... .
...
Рейтинг: 0 / 0
07.03.2009, 08:07
    #35856951
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
<html>
	<head>
		<title></title>
		<script type="text/javascript">
<!--
var
	e;

function Circle(radius)
{
	this.radius=radius;
	e=(this instanceof FullCircle);
}

Circle.prototype.area=function()
{
	e=(this instanceof FullCircle);
	return(Math.PI*this.radius*this.radius);
}

function FullCircle(x, y, radius)
{
	this.x=x;
	this.y=y;
	this.radius=radius;
	this.mm=M();
	e=(this instanceof FullCircle);
}

function M()
{
	return(this instanceof Object);
}

FullCircle.prototype=Circle.prototype;

var
	myCircle=new FullCircle( 0 , 0 , 1 );

//var
//	myM=new M();
// -->
		</script>
	</head>
	<body>
	</body>
</html>
Mozilla 1.7.13 + Mozilla -> Tools -> Web Development -> JavaScript Debugger
Mozilla Firefox 3.0.7 + Mozilla FireFox -> Tools -> Firebug 1.3.3
Ставим breakpoint на выделенную линию (23) и трассируем... BTW, заметьте: var myM = new M(); - за'rem'лено, а this.mm=M(); - вызываецо... Даже, на характер, в M$ IE 6.0.2800.1106+SP1 (подцепился VS2005) проверил - и там вызываецо...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
07.03.2009, 08:11
    #35856952
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
BTW, поставьте еще breakpoint'ы на линии 11, 17 и про'debugg'тьте под мозилкой и M$ IE...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
08.03.2009, 00:22
    #35857394
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
Ex_Soft
про'debugg'тьте
Я смысла пока не понимаю - зачем. И так все продебаггено, что я должен там увидеть. Что Вы хотели показать ?
Пока вопросы - "Почему" из первого поста меня волнуют .
...
Рейтинг: 0 / 0
09.03.2009, 14:11
    #35858217
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
Не знаю что Вы, где и под чем debugg'ерили, но у меня под Mozilla Firefox 3.0.7, M$ IE 6.0.2800.1106+SP1, Windows Script Host (wscript.exe ver. 5.6.0.6626)
code
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<html>
	<head>
		<title></title>
		<script type="text/javascript">
<!--
var e;

function Circle(radius)
{
  this.radius = radius;
  e=(this instanceof FullCircle);
}

Circle.prototype.area = function()
{
  e=(this instanceof FullCircle);
  return Math.PI * this.radius * this.radius;
}

function FullCircle(x, y, radius)
{
  this.x = x;
  this.y = y;
  this.radius = radius;
  this.mm=M();
  e=(this instanceof FullCircle);
  alert((this instanceof FullCircle)+"^"); //WScript.Echo((this instanceof FullCircle)+"^");
}

function M()
{
  alert((this instanceof Object)+"*"); //WScript.Echo((this instanceof Object)+"*");
}

FullCircle.prototype = Circle.prototype;

var myCircle = new FullCircle( 0 ,  0 ,  1 );
//var myM = new M();
alert(e +"|"); //WScript.Echo(e +"|");
// -->
		</script>
	</head>
	<body>
	</body>
</html>

выдает всегда

false*
true^
true|

причем вне зависимости от за'rem'ленности var myM = new M();
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
09.03.2009, 15:51
    #35858332
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
Ex_SoftНе знаю что Вы, где и под чем debugg'ерили, но у меня ...
Вы уже 4-й пост посылаете не по теме, о чем я Вам уже после первого Вашего ответа намекал.
Возникает вопрос - зачем ? Прочтите пожалуйста внимательно стартовый пост и не искажайте его в своих примерах.
...
Рейтинг: 0 / 0
09.03.2009, 16:50
    #35858426
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
kefi
не по теме

Ну раз Вы считаете не по теме - значит не по теме.

P.S.
kefi
не искажайте его

Взято по принципу copy -> paste из Вашего первого поста. Что бы не быть голословным, будьте любезны, укажите, существенные на Ваш взгляд, искажения.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.03.2009, 17:23
    #35858466
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
2 Ex_Soft > Ваш пример у меня работает так же как и у Вас, но он отличен от исходного.

Разница есть в :
Код: plaintext
e=(this instanceof FullCircle);
и
Код: plaintext
//  e=(this instanceof FullCircle);
?

Вопросы 1 поста :

1) Почему пока не раскоментирована строка //var myM = new M(); в Результатах имеем false* Т.е. почему нужно инициализировать объект, ведь функция сама по себе является объектом?

2) Как из метода объекта обратиться к объекту (this в методе mm не прокатывает) и как к его родителю?

3) Почему в методах родительского объекта Circle не инициализируя родительский объект явно , а только создавая дочерний объект FullCircle нельзя изменить значения переменных вне тела метода ( var e; дает undefined в Результатах ) ?
...
Рейтинг: 0 / 0
09.03.2009, 19:26
    #35858592
LINUXER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
kefi
1) Почему пока не раскоментирована строка //var myM = new M(); в Резултатах имеем false* Т.е. почему нужно инициализировать объект, ведь функция сама по себе является объектом?

вызов с оператором new - вызов функции как конструктора. Тогда this - создаваемый объект.
при простом вызове функций(=метода), this - объект, которому она принадлежит. В браузере, глобальный объект - window. В wscript-е - пнятия не имею, может null

kefi
2) Как из метода объекта обратиться к объекту (this в методе mm не прокатывает) и как к его родителю?

mm был бы методом, если бы объявлялся this.mm=M;
а сейчас он "ничто" - функция M ничего не вернула

kefi
3) Почему в методах родительского объекта Circle не инициализируя родительский объект явно ,

нуу.., похоже потому что так задумано
kefi
а только создавая дочерний объект FullCircle нельзя изменить значения переменных вне тела метода ( var e; дает undefined в Результатах ) ?

можно, раскомментируйте // e=(this instanceof FullCircle);
...
Рейтинг: 0 / 0
09.03.2009, 19:58
    #35858627
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
kefi,

возможно, ответы на все вопросы есть тут
...
Рейтинг: 0 / 0
09.03.2009, 21:49
    #35858696
kefi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JavaScript: вопросы по объектам ...
2 LINUXER > можно, раскомментируйте // e=(this instanceof FullCircle);
Но это будет не в методе родителя , а в методе потомка. Вопрос же был - почему нельзя просто создав потомка, без явного вызова метода родителя , в котором изменяется значение внешней переменной. Но, вроде как - понятно.

А как насчет - обратиться к родителю из метода потомка ?

Яростный Мечkefi,
возможно, ответы на все вопросы есть тут
Да, возможно, обязательно посмотрю.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript: вопросы по объектам ... / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]