Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.07.2012, 17:28
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 11  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Цитата:
Сообщение от wvxvw Посмотреть сообщение
typeof существует в AS только потому, что это часть ECMAScript. Вообще он не нужен / только путает по поводу того, как устроен язык. Этот оператор задумывался для языка где пользовательские типы нельзя создать, а встроенных - всего 6 или сколько-то там, и эти типы "object", "string", "number", "boolean", "function", "undefined" - и вроде все, но может что-то забыл. Ситуация в AS совсем не такая, создание пользовательских типов - обычное дело. Чтобы получить имя класса создавшего объект - используйте getQualifiedClassName(), если нужно получить ссылку на конструктор - (<???> as Object).constructor. <???> замените на ссылку на ваш объект. Кастовать к Object нужно потому что свойство constructor из каких-то непонятных соображений компилятором засекречено.
еще null забыл.
да и полезность в js typeof также сомнительна, там тоже не так решается определение типа.

Старый 24.07.2012, 17:34
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 12  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Цитата:
Сообщение от Krusty Посмотреть сообщение
да и полезность в js typeof также сомнительна, там тоже не так решается определение типа.
А как там решается определение типа?

Старый 24.07.2012, 17:52
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 13  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
В JS чаще всего утиная типизация используется. Грубо говоря, если вам нужно сделать splice, то просто проверяется наличие splice, иначе ошибка-не поддерживается. А является ли он при этом array или чем-то другим-неважно.
а typeof даже встроенные объекты типа date не различает.
Код:
if(obj.splice){
// я массив или что-то похожее, я умею делать splice
}else{
// неведома зверюшка.
}
Цитата:
Утиная типизация основана на одной известной пословице: «If it looks like a duck, swims like a duck and quacks like a duck, then it probably is a duck (who cares what it really is)».

В переводе: «Если это выглядит как утка, плавает как утка и крякает как утка, то, вероятно, это утка (какая разница, что это на самом деле)».


Последний раз редактировалось Krusty; 24.07.2012 в 18:06.
Старый 24.07.2012, 17:58
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 14  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
в as не утиная типизация
__________________
:)

Старый 24.07.2012, 18:34
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 15  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Цитата:
Сообщение от Krusty Посмотреть сообщение
В JS чаще всего утиная типизация используется. Грубо говоря, если вам нужно сделать splice, то просто проверяется наличие splice, иначе ошибка-не поддерживается. А является ли он при этом array или чем-то другим-неважно.
typeof для простых типов, а не для Date. Определить Date можно с помощью instanceof, в прочем как и массив.

Старый 24.07.2012, 20:24
Krusty вне форума Посмотреть профиль Отправить личное сообщение для Krusty Найти все сообщения от Krusty
  № 16  
Ответить с цитированием
Krusty

Регистрация: Jul 2007
Сообщений: 393
Цитата:
Сообщение от Bgg Посмотреть сообщение
typeof для простых типов, а не для Date. Определить Date можно с помощью instanceof, в прочем как и массив.
Само собой.
Ну так поэтому он и бессмысленный, кроме того,
Код:
(typeof(new Boolean())=='object')// true 
(typeof(null)=='object')// true
что вообще делает всю затею ненужной.
Ладно, оффтопить заканчиваем.

Старый 24.07.2012, 21:53
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 17  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
> еще null забыл.
Код AS3:
typeof null == "object"
__________________
Hell is the possibility of sanity

Старый 25.07.2012, 00:09
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 18  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Кастовать к Object нужно потому что свойство constructor из каких-то непонятных соображений компилятором засекречено.
Оно не засекречено - это прототипное свойство, насколько мне помнится.

Старый 25.07.2012, 01:24
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 19  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Но компилятор не компиляет, если не привести к динамическому типу.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 25.07.2012, 02:57
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 20  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
> Оно не засекречено - это прототипное свойство, насколько мне помнится.
Ну так toString(), valueOf() и т.п. можно использовать и без магии, они же тоже объявлены на прототипе.
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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