Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Непонятки с оператором typeof (https://javascript.ru/forum/misc/26014-neponyatki-s-operatorom-typeof.html)

Mахmaxmaximus 22.02.2012 17:32

Непонятки с оператором typeof
 
http://shamansir.github.com/JavaScri.../#types.typeof

я вообще не понял либо авторы тупят либо я, Тайпоф не возвращает класс или тип обьекта. Он возвращает то, к какому из нативнйх типов данных принадлежит операнд:

string undefined function number object boolean

авторы этого не знают? О_О Или они просто считают это неправильным?

Но по моему это правильно! Класс обьекта нужно определять по другому! Тут просто определяется тип данных.

DreamTheater 22.02.2012 17:44

https://developer.mozilla.org/en/Jav...erators/typeof

SkyLight 22.02.2012 18:15

Цитата:

Сообщение от Mахmaxmaximus
Класс обьекта нужно определять по другому!

А где вы там увидели, что они класс определяют через typeof? Нету там такого. Определение имени "класса" идет ниже и совсем другим методом.

Mахmaxmaximus 22.02.2012 18:19

Цитата:

Сообщение от SkyLight
А где вы там увидели, что они класс определяют через typeof? Нету там такого. Определение имени "класса" идет ниже и совсем другим методом.

они говорят что тайпоф сломанный, мыл не определяет класс обьекта, и приходится его заменять тем костылем что они написали ниже.
Но тайпоф и не должен определять тип обьекта он должен определять то к какому типу данных javascript относится операнд.
Если операнд относится к дипу данных object то тогда уже можно определять его класс.

Еще раз повторяю, тайпоф определяет на тип класс, а тип данных операнда! В javascript не все есть обьект!


DreamTheater,
и?

vasa_c 22.02.2012 18:22

Ну, люди выражают своё резкое нетерпимое мнение по всем подряд вопросам, включая те, в которых они не всегда хорошо шарят.
Я полностью одобряю!

Mахmaxmaximus 22.02.2012 18:24

Цитата:

Сообщение от vasa_c
Я полностью одобряю!

меня или их?

моя позиция в том что "не знаешь - не учи"

DreamTheater 22.02.2012 18:44

Цитата:

Сообщение от Mахmaxmaximus (Сообщение 159204)
они говорят что тайпоф сломанный, мыл не определяет класс обьекта, и приходится его заменять тем костылем что они написали ниже.
Но тайпоф и не должен определять тип обьекта он должен определять то к какому типу данных javascript относится операнд.
Если операнд относится к дипу данных object то тогда уже можно определять его класс.

Еще раз повторяю, тайпоф определяет на тип класс, а тип данных операнда! В javascript не все есть обьект!


DreamTheater,
и?

То есть typeof работает не так как они хотели бы, но это не означает что он работает неверно.
Цитата:

The typeof operator returns a string indicating the type of the unevaluated operand.
В каком месте тут Вы видите что typeof определяет какие-то "классы"?

Mахmaxmaximus 22.02.2012 18:50

Цитата:

Сообщение от DreamTheater
То есть typeof работает не так как они хотели бы, но это не означает что он работает неверно.

А, ну вот и я к тому, я прост подумал ты как то за них заступился) а по ссылке наоборот подтверждение.

Я реал этот гарден все дочитать не мог и вот решил дочитать и наткнулся на такой вот нубство.. Позор уже отписал переводчикам.

Цитата:

Сообщение от DreamTheater
В каком месте тут Вы видите что typeof определяет какие-то "классы"?

Ну, типы и классы это одно и тоже. Это синонимы.
Но есть типы данных а, есть типы обьектов. Школьки с гардена этого не знают.



И то что оператор new создает обьект им видимо тоже неведомо)

DreamTheater 22.02.2012 19:21

https://developer.mozilla.org/en/Jav...bject/toString

Цитата:

Using toString() to detect object class

toString() can be used with every object and allows you to get its class. To use the Object.prototype.toString() with every object, you need to call Function.prototype.call() or Function.prototype.apply() on it, passing the object you want to inspect as the first parameter called thisArg.
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]

vasa_c 22.02.2012 19:39

Цитата:

моя позиция в том что "не знаешь - не учи"
Ну здесь скользкий момент.
В какой-то момент может оказаться, что, что казалось знал и чему учил, на самом деле не знал ни разу.


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