Я столкнулся со следующей таблицей, в которой указано свойство объекта [[Class]]
и его соответствующее значение, которое возвращает оператор typeof
.Понимание оператора typeof в Javascript
Value Class Type
-------------------------------------
"foo" String string
new String("foo") String object
1.2 Number number
new Number(1.2) Number object
true Boolean boolean
new Boolean(true) Boolean object
new Date() Date object
new Error() Error object
[1,2,3] Array object
new Array(1, 2, 3) Array object
new Function("") Function function
/abc/g RegExp object (function in Nitro/V8)
new RegExp("meow") RegExp object (function in Nitro/V8)
{} Object object
new Object() Object object
Одна вещь, чтобы отметить это typeof
правильно возвращает примитивные типы данных, связанных с JavaScript.
Тем не менее, он возвращает object
тип для массива, который наследует от Array.prototype
, но возвращает тип function
для функции, которая наследует от Function.prototype
.
Учитывая, что все является объектом в Javascript (включая массивы, функции & примитивных объектов типа данных), я нахожу это поведение оператора typeof
очень непоследовательным.
Может ли кто-нибудь проливать свет на то, как работает оператор typeof
?
Вы должны учитывать ** экземпляр ** при работе с объектами https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof – ymz
Существуют только определенные типы с конкретным результатом. Каждый другой тип считается объектом. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof – Armin
Если typeof возвратил 'object' для всего, так как все является объектом в javascript, это было бы совершенно бесполезно. –