Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Object, Array или Node ? (https://javascript.ru/forum/misc/6734-object-array-ili-node.html)

PeaceCoder 18.12.2009 20:38

ну раз так. написал такую функцию
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

Octane 18.12.2009 22:45

PeaceCoder,
лучше всегда возвращать строку, по аналогии со стандартным typeof
http://javascript.ru/forum/project/6...html#post34742

PeaceCoder 19.12.2009 00:40

Цитата:

Сообщение от Octane
лучше всегда возвращать строку, по аналогии со стандартным typeof

зачем? ведь она выдает разные типы. все переблал... что еще может быть?

Octane 19.12.2009 22:10

Цитата:

Сообщение от PeaceCoder
зачем?

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

var a;

if (typeOf(a) == "undefined") {
    alert(1);
}
else {
    alert(2);
}

PeaceCoder 19.12.2009 23:02

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

x-yuri 20.12.2009 10:59

Цитата:

Сообщение от Octane
чтобы всегда выполнять сравнение со строкой

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

Разве что typeOf(a) == 'O' выглядит так, что не сразу догадаешься что значит O. Мне, например, такой вариант в голову пришел "О! тип a - то, что нужно" ;). И надо помнить, что правильно писать typeOf(a) == undefined, а не typeOf(a) == 'U'

PeaceCoder 20.12.2009 13:35

просто если делать вспомогательную функцию то делать так что бы толк от нее был максимум. в данном случае определяет правильно любой тип да еще и код сокращает... O=object A=Array, B=Boolean, N=Number,S=String,H=HTMLDom,F=Function..., а то что функция возвращает можно и в JSDoc'е написать ине будет непоняток что такое "О" =)

Octane 20.12.2009 15:34

Ну я не разбирался, что там за обозначения для типов выдумали в конкретной функции, речь о этой строке:
Цитата:

Сообщение от PeaceCoder
if (o===null || o===undefined) return o;

все привыкли, что typeof всегда возвращает строку, а тут вдруг
Цитата:

Сообщение от x-yuri
надо помнить, что правильно писать typeOf(a) == undefined, а не typeOf(a) == 'U'

Да, можно прочитать в JSDoc, но зачем так делать, если не проблема всегда возвращать строку.

PeaceCoder 20.12.2009 17:41

Octane, код пишу для себя. а для других служит JSDoc =) Да и логичней сравнивать с undefined|null чем с "undefined"|"null" по 2 символа больше =)

x-yuri 21.12.2009 14:47

Цитата:

Сообщение от PeaceCoder
да еще и код сокращает...

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

Цитата:

Сообщение от PeaceCoder
Да и логичней сравнивать с undefined|null чем с "undefined"|"null" по 2 символа больше =)

логика тут отсутствует: вместо экономии процессорного времени ты экономишь на спичках лишних символах ;)


Часовой пояс GMT +3, время: 00:21.