![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Почему такие разные результаты?
1) public function Main():void { var d:Dictionary = new Dictionary(); d["key"] = "dic"; trace(d["key"]); //dic trace(d.hasOwnProperty("key")); //true } |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Потому всё, что попадает в hasOwnProperty конвертится в строку.
Если хотите узнать, есть ли обьект в словаре - используйте in
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Modus ponens
|
hasOwnProperty сообщает о наличии поля (свойства), ключи словаря и индексы массива - не свойства. Просто форма записи доступа к содержанию массива или словаря выглядит так же, как динамический доступ к свойству.
Есть еще один момент, который стоит упомянуть при использовании hasOwnProperty: эта функция объявлена на прототипе класса Object - а это значит что если класс, у экземпляра которого вы ее вызываете не переопределяет ее, то используется именно та, которую плеер сейчас использует в Object.prototype. Object.prototype.hasOwnProperty возможно переопределить во время выполнения программы, поэтому, использование этой функции в местах, где это может оказаться критично (например, вы загружаете чужую SWF и используете hasOwnProperty передавая в нее строку с паролем или другими личными данными пользователя) - вы за это можете поплатиться.
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:52. |
|
|
« Предыдущая тема | Следующая тема » |
|
|