Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как происходит нестрогое сравнение? (http://www.flasher.ru/forum/showthread.php?t=66928)

Смольный (Smolniy) 20.07.2005 13:49

Вообще говоря, valueOf возвращает количество миллисекунд, прошедших с 1.1.1970, поэтому сравнение происходит просто по числу.
В этом плане показателен пример:
Код:

d = new Date ();
trace (d)
n = d*1
trace (n)
trace (d.getTime())
trace (d.valueOf())
=========
Wed Jul 20 12:48:33 GMT+0400 2005
1121849313937
1121849313937
1121849313937

Если выполнять +, то он имеет преимущественно стринговое действие, поэтому
Код:

d = new Date ();
trace (d)
n = d+0
trace (n)
trace (d.getTime())
trace (d.valueOf())
=========
Wed Jul 20 12:47:53 GMT+0400 2005
Wed Jul 20 12:47:53 GMT+0400 20050
1121849273671
1121849273671

Теперь о примере. Если даты разные, то
Код:

e = new Date ();
s = new Date (1999, 3, 3);
trace (s.getTime());
trace (e.getTime());
trace (s == e);
if (s > e) {
        trace (1);
} else if (s < e) {
        trace (2);
} else if (s == e) {
        trace (0);
} else {
        trace ("???");
}
============
923083200000
1121849203562
false
2

а если они одинаковые, то видимо Flash сравнивает объекты, что не имеет с его точки зрения смысла, поэтому сравнение не срабатывает.
В конце концов, ведь
Код:

a = new String("мама мыла раму");
b = new Object;
if (a > b) {
        trace (1);
} else if (a < b) {
        trace (2);
} else if (a == b) {
        trace (0);
} else {
        trace ("???");
}
===================
???


Вообще же дела чуднЫе, как впрочем зачастую в Flash.

AlDev 20.07.2005 14:10

все эти чУдные дела полностью наследуются от Object. Так-что Date как-таковой тут не причём:
Код:

Object.prototype.valueOf = function()
{
        trace ('valueOff called');
}
var obj_1:Object = new Object();
var obj_2:Object = new Object();
trace ('res='+(obj_1>obj_2));


iNils 20.07.2005 14:14

У Date valueOf не наследуется от Object.valueOf
Он равен Date.getTime

AlDev 20.07.2005 14:20

я имел ввиду, что сравнение на <> происходит через valueOff, а сравнение == не имеет смысла. Так-же, как и в Object


Часовой пояс GMT +4, время: 06:01.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.