powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript: вопросы по объектам ...
13 сообщений из 13, страница 1 из 1
JavaScript: вопросы по объектам ...
    #35854022
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть код Примера :
Код: 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
JavaScript: вопросы по объектам ...
    #35855733
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
JavaScript: вопросы по объектам ...
    #35856717
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft
this в первом и втором случае - разный: в первом случае this - это FullCircle, а, во втором, - window.
Так в контексте 1-го поста непонятно "почему" так - видимо, пока функция не вызвана (var myM = new M(); или myCircle.mm() - кстати- не вызывается что-то ? ?????? ), она как экземпляр объекта, на который this мог юы вернуть ссылку, не имеет места быть ;
, ну и - остальные вопросы тоже... .
...
Рейтинг: 0 / 0
JavaScript: вопросы по объектам ...
    #35856951
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
JavaScript: вопросы по объектам ...
    #35856952
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BTW, поставьте еще breakpoint'ы на линии 11, 17 и про'debugg'тьте под мозилкой и M$ IE...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
JavaScript: вопросы по объектам ...
    #35857394
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft
про'debugg'тьте
Я смысла пока не понимаю - зачем. И так все продебаггено, что я должен там увидеть. Что Вы хотели показать ?
Пока вопросы - "Почему" из первого поста меня волнуют .
...
Рейтинг: 0 / 0
JavaScript: вопросы по объектам ...
    #35858217
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю что Вы, где и под чем 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
JavaScript: вопросы по объектам ...
    #35858332
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_SoftНе знаю что Вы, где и под чем debugg'ерили, но у меня ...
Вы уже 4-й пост посылаете не по теме, о чем я Вам уже после первого Вашего ответа намекал.
Возникает вопрос - зачем ? Прочтите пожалуйста внимательно стартовый пост и не искажайте его в своих примерах.
...
Рейтинг: 0 / 0
JavaScript: вопросы по объектам ...
    #35858426
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kefi
не по теме

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

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

Взято по принципу copy -> paste из Вашего первого поста. Что бы не быть голословным, будьте любезны, укажите, существенные на Ваш взгляд, искажения.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
JavaScript: вопросы по объектам ...
    #35858466
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
JavaScript: вопросы по объектам ...
    #35858592
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
JavaScript: вопросы по объектам ...
    #35858627
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kefi,

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

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

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


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