Операторы
Код:
x = new Object(); Я думаю, что оператор равенства сравнивает ссылки на объект, а операторы сравнения строки "object Object", правильно? |
похоже да, для убедительности введи строку
Код:
trace (typeof x >= y); // true |
Цитата:
Вот trace (typeof x >= typeof y); // true, но это и понятно - сравниваются строки "Object". |
хе, проверил дает 'true'.
Ващето я под МХ2004 с его ас2, но переключился ас1 - однако снова 'true' :D |
Проверели еще авторитетные отцы :) . Сказали: true, not false
|
Jlekc, меня глюкануло, точно true для ">= " и false для "==", только я не понимаю зачем typeof применять к одному операнду. Как это дает ответ на вопрос?
|
у объектов есть методы valueOf и toString
они определены по умолчанию, и используются автоматически при необходимости приведения типов по умолчанию valueOf возвращает ссылку а toString - "[object Object]" эти методы можно переписать самому, если нужны какие-то более осмысленные вещи :) например, в арифметических операциях сначала идет попытка воспользоваться valueOf, и если полученное значение не является числом - срабатывает toString Код:
a = {}; |
Спасибо,
toString и valueOf в таких случаях вызываются автоматически. Но вопрос такой: "==", в случаях сравнения сложных данных, сравнивает ссылки. А ">=" и "<=" сравнивает значение, right? Это единственное объяснение первому коду, right? |
Часовой пояс GMT +4, время: 12:42. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.