|
|
|
|||||
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
Операторы
x = new Object(); y = new Object(); trace(x == y); // false trace(x <= y); // true trace(x >= y); // true Я думаю, что оператор равенства сравнивает ссылки на объект, а операторы сравнения строки "object Object", правильно? |
|
|||||
Последний раз редактировалось Jlekc; 11.02.2004 в 14:14. |
|
|||||
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
Цитата:
Вот trace (typeof x >= typeof y); // true, но это и понятно - сравниваются строки "Object". |
|
|||||
хе, проверил дает 'true'.
Ващето я под МХ2004 с его ас2, но переключился ас1 - однако снова 'true' |
|
|||||
Проверели еще авторитетные отцы . Сказали: true, not false
|
|
|||||
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
Jlekc, меня глюкануло, точно true для ">= " и false для "==", только я не понимаю зачем typeof применять к одному операнду. Как это дает ответ на вопрос?
|
|
|||||
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
у объектов есть методы valueOf и toString
они определены по умолчанию, и используются автоматически при необходимости приведения типов по умолчанию valueOf возвращает ссылку а toString - "[object Object]" эти методы можно переписать самому, если нужны какие-то более осмысленные вещи :) например, в арифметических операциях сначала идет попытка воспользоваться valueOf, и если полученное значение не является числом - срабатывает toString |
|
|||||
Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
|
Спасибо,
toString и valueOf в таких случаях вызываются автоматически. Но вопрос такой: "==", в случаях сравнения сложных данных, сравнивает ссылки. А ">=" и "<=" сравнивает значение, right? Это единственное объяснение первому коду, right? |
Часовой пояс GMT +4, время: 10:58. |
|
« Предыдущая тема | Следующая тема » |
|
|