Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.12.2009, 20:38
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

ну раз так. написал такую функцию
function typeOf(o){
  if (o===null || o===undefined) return o;
  var $;
  if (($=Object.prototype.toString.call(o).substr(8,1))!="O") return $;
  return (o=='[object]' ? 'H':$);
  }


На выходе: null,undefined,A,O,N,S,B,H,F

Последний раз редактировалось PeaceCoder, 18.12.2009 в 20:48.
Ответить с цитированием
  #12 (permalink)  
Старый 18.12.2009, 22:45
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

PeaceCoder,
лучше всегда возвращать строку, по аналогии со стандартным typeof
Библиотечка .
Ответить с цитированием
  #13 (permalink)  
Старый 19.12.2009, 00:40
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Octane
лучше всегда возвращать строку, по аналогии со стандартным typeof
зачем? ведь она выдает разные типы. все переблал... что еще может быть?
Ответить с цитированием
  #14 (permalink)  
Старый 19.12.2009, 22:10
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от PeaceCoder
зачем?
чтобы всегда выполнять сравнение со строкой
function typeOf(arg) {
    return arg;
}

var a;

if (typeOf(a) == "undefined") {
    alert(1);
}
else {
    alert(2);
}
Ответить с цитированием
  #15 (permalink)  
Старый 19.12.2009, 23:02
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

А ты об этом... ну это не страшно и не так важно.

Последний раз редактировалось PeaceCoder, 19.12.2009 в 23:05.
Ответить с цитированием
  #16 (permalink)  
Старый 20.12.2009, 10:59
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Octane
чтобы всегда выполнять сравнение со строкой
Octane, ты, наверное, говоришь в целом, а не про данный конкретный случай? Потому что в данном случае у меня не получается придумать какую-нибудь реальную проблемную ситуацию с таким подходом

Разве что typeOf(a) == 'O' выглядит так, что не сразу догадаешься что значит O. Мне, например, такой вариант в голову пришел "О! тип a - то, что нужно" . И надо помнить, что правильно писать typeOf(a) == undefined, а не typeOf(a) == 'U'
Ответить с цитированием
  #17 (permalink)  
Старый 20.12.2009, 13:35
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

просто если делать вспомогательную функцию то делать так что бы толк от нее был максимум. в данном случае определяет правильно любой тип да еще и код сокращает... O=object A=Array, B=Boolean, N=Number,S=String,H=HTMLDom,F=Function..., а то что функция возвращает можно и в JSDoc'е написать ине будет непоняток что такое "О" =)
Ответить с цитированием
  #18 (permalink)  
Старый 20.12.2009, 15:34
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Ну я не разбирался, что там за обозначения для типов выдумали в конкретной функции, речь о этой строке:
Сообщение от PeaceCoder
if (o===null || o===undefined) return o;
все привыкли, что typeof всегда возвращает строку, а тут вдруг
Сообщение от x-yuri
надо помнить, что правильно писать typeOf(a) == undefined, а не typeOf(a) == 'U'
Да, можно прочитать в JSDoc, но зачем так делать, если не проблема всегда возвращать строку.
Ответить с цитированием
  #19 (permalink)  
Старый 20.12.2009, 17:41
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Octane, код пишу для себя. а для других служит JSDoc =) Да и логичней сравнивать с undefined|null чем с "undefined"|"null" по 2 символа больше =)
Ответить с цитированием
  #20 (permalink)  
Старый 21.12.2009, 14:47
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от PeaceCoder
да еще и код сокращает...
есть такая фраза penny wise and pound foolish (про твой текущий подход). Еще почитать можно здесь

Сообщение от PeaceCoder
Да и логичней сравнивать с undefined|null чем с "undefined"|"null" по 2 символа больше =)
логика тут отсутствует: вместо экономии процессорного времени ты экономишь на спичках лишних символах
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Понимание ООП в JavaScript kefi Общие вопросы Javascript 160 25.09.2012 21:30
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
object и object HTMLFormElement Paul56 Общие вопросы Javascript 2 17.07.2009 08:29