Непонятки с оператором typeof
http://shamansir.github.com/JavaScri.../#types.typeof
я вообще не понял либо авторы тупят либо я, Тайпоф не возвращает класс или тип обьекта. Он возвращает то, к какому из нативнйх типов данных принадлежит операнд: string undefined function number object boolean авторы этого не знают? О_О Или они просто считают это неправильным? Но по моему это правильно! Класс обьекта нужно определять по другому! Тут просто определяется тип данных. |
|
Цитата:
|
Цитата:
Но тайпоф и не должен определять тип обьекта он должен определять то к какому типу данных javascript относится операнд. Если операнд относится к дипу данных object то тогда уже можно определять его класс. Еще раз повторяю, тайпоф определяет на тип класс, а тип данных операнда! В javascript не все есть обьект! DreamTheater, и? |
Ну, люди выражают своё резкое нетерпимое мнение по всем подряд вопросам, включая те, в которых они не всегда хорошо шарят.
Я полностью одобряю! |
Цитата:
моя позиция в том что "не знаешь - не учи" |
Цитата:
Цитата:
|
Цитата:
Я реал этот гарден все дочитать не мог и вот решил дочитать и наткнулся на такой вот нубство.. Позор уже отписал переводчикам. Цитата:
Но есть типы данных а, есть типы обьектов. Школьки с гардена этого не знают. И то что оператор new создает обьект им видимо тоже неведомо) |
https://developer.mozilla.org/en/Jav...bject/toString
Цитата:
var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] //Since JavaScript 1.8.5 toString.call(undefined); // [object Undefined] toString.call(null); // [object Null] |
Цитата:
В какой-то момент может оказаться, что, что казалось знал и чему учил, на самом деле не знал ни разу. |
А то что с типами и typeof в JS (и в разных браузерах) ад кромешный, это факт.
|
Цитата:
|
Цитата:
Object.prototype.toString() немного помогает, но кроме одного браузера и я думаю все знают его имя. Ну и typeof null === "object" тоже круто. |
Цитата:
alert([].constructor === Array); alert(document.getElementsByTagName('div').constructor === HTMLCollection); В чем проблема? |
Цитата:
|
Можно много говорить чем что является с сугубо теоретической точки зрения.
Можно вспомнить аналогии из C++ и Java, что null, это значение объекта, обозначающее его отсутствие. И вообще подо всё подвести теоретическую базу, откопать ECMA и начать цитировать его, как библию. Но с точки зрения реальных задач, где требуется узнать что вообще там лежит в этой переменной, зачастую приходится делать кучу грязных хаков и иногда сталкиваться вообще с непостижимым :) |
Цитата:
Опять же, можете привести пример одного из "грязных хаков"? |
Цитата:
Просто итерировани, each() тот же. Соответственно, простые хэши нужно перебрать по свойствам. Массивы, коллекции, arguments, перебрать по порядку. Функции и HTMLElement перебирать вообще не нужно, так как это уникальные сущности, а не хранилища данных. |
vasa_c,
я еще раз повторю Цитата:
|
Цитата:
Всем сколько нибудь интересующихся историей этих технологий известно как делался этот язык и как писались эти спецификации. Вы считаете JS идеальным языком? |
Во-первых массивы и массивоподобные объекты это разные сущности, которые итерируются совершенно по-разному. А во-вторых уже давным-давно написаны универсальные функции для работы с коллекциями, например в Underscore.
|
Цитата:
|
Цитата:
|
Цитата:
Сама проблема именно в том, что эти функции пришлось писать, вместо того, чтобы просто работать с языком. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
в чем ад работы с типами данных с typeof в javascript? можно пример кода где проявляется адовость? |
Вообще надо хотя бы разок заглянуть в http://javascript.ru/ecma/part11#a-11.4.3 и «ад кромешный» рассеется.
------------- Цитата:
Object.prototype.__proto__===null , сам null является отдельным типом, то что выдает typeof — соглашениеЦитата:
Цитата:
|
Octane,
ты стандарт наизусть знаешь? |
Цитата:
|
Ну не наизусть… да и мне далеко до теории уровня Дмитрия Сошникова, он бы сейчас вам тут рассказал!
|
А Илья че)?
|
Про null на прошлой неделе поднимали вопрос, но стандарт действительно желательно иногда читать.
Кстати вот схемка про null: http://www.mollypages.org/misc/js.mp Заглушка это, насколько я понял кто-то сказал и все согласились, чтобы не спорить, т.к идей других не было :) |
Цитата:
var q = function(){} alert( typeof q ) var q = "" alert( typeof q ) var q = {} alert( typeof q ) var q = 1 alert( typeof q ) var q = undefined alert( typeof q ) var q = true alert( typeof q ) var q = null alert( typeof q ) я только что получил доступ к семи ОЙ ЗАТУПИЛ))))) |
Mахmaxmaximus,
раз уж ты в дебри языка полез, на тебе небольшую подборку http://javascript.ru/forum/offtopic/...avascript.html http://javascript.ru/forum/misc/3158...reference.html http://javascript.ru/forum/study/572...ipt-ninja.html http://javascript.ru/forum/misc/5731...h-obektov.html http://javascript.ru/forum/misc/5329...lik-imjon.html |
Kolyaj,
Ты золотой человек! Я серьезно! Спасибо! |
Цитата:
Ей всё равно, что при переборе HTMLCollection мне не нужен ни item, ни length. |
Цитата:
Вот в попытке её написания и отладки под все браузеры и проявляется адовость. |
Цитата:
Конечно, чтение стандарта и знание внутренней реализации полностью проливает свет на то, почему что-то именно так работает. У меня нет вопроса почему typeof null возвращает object. У меня есть вопрос - какого чёрта он возвращает object? И тот же вопрос есть и у самих разработчиков, к чьему непререкаемому авторитету тут уже аппелировали. В ES5 typeof null теперь возвращает "null". |
Часовой пояс GMT +3, время: 23:09. |