Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Ключ может быть как числовой(нумерованный), так и буквенный(именованный)
И как я их называю «философские типы»:
— null (v = null)
— undefined (u=undefined)
12. toString(); //число не станет переменной но его уже можно использовать как объект
v4 = String(2); //строковая глобальная переменная вызванная через конструктор. Создаст переменную window.v4
Они есть для всех примитивов (Number(), Boolean(), String(), Object())
На самом деле, забегая наперёд, во время оборачивания примитива в объект, выстраивается целая цепочка наследования (как это организовано мы поговорим позже), но по сути получается такая вот «матрёшка»:
Object(Number(<примитив>)).
o = {1:'a', 2:'b'}
o[3] = 'c'
for(var i in o) console.log( typeof i )
>(3) string
var v = null;
typeof v;
Стоит упомянуть, что в новых версиях ES typeof null === 'null'Number.prototype instanceof Object
(new Number).__proto__.__proto__.constructor === Object
var f = new function( ){ };var f = function ( ){ }function(){};function f(){}Философские по тому, что null означает, что переменной присвоено ничего, а undefined – означает, что в переменную присвоили пустоту. Чем отличается «ничего» от «пустоты» в данном случае – поразмыслите на досуге.
undefined обычно означает, что имени этой переменной нет в таблице переменных. В JS это немного не так, потому что var x все же «регистрирует» имя переменной, но не присваивает ей никакого значения. null же пришел из мира указателей, когда переменная ссылалась в никуда, т.е. нельзя получить никакого значения. В JS это снова же искажено и применяется для обозначения не примитивного значения и не ссылки на объект, но переменная при этом должна быть определена и иметь какое-то значение.
«Сложно о простом». Типы данных JS. В поисках истины примитивов и объектов