Вы много хотите. :) Пока что даже с HTML и CSS никакой гарантии нет. А на гугловский авторитет майкрософту, мягко говоря, наплевать. Все остальные толкают поддержку SVG и без Google™.
typeof function(){} === «function»
В Javascript нет такого типа как function.
Вот что делает typeof:
Return a string determined by Type(Result(4)) according to the following table:
Undefined — «undefined»
Null — «object» (!!!)
Boolean — «boolean»
Number — «number»
String — «string»
Object (native and doesn’t implement [[Call]]) — «object»
Object (native and implements [[Call]]) — «function» (!!!)
Почему typeof такая ненадёжная я не знаю, но она такая.
Ну вот мы пришли к тому, что в спецификации написан бред.
Я, к сожалению, не могу обсуждать вашу модель языка, я не телепат. Я могу только говорить про то, что написано в спецификации.
Null — примитив
Функция — объект
В спецификации написано для typeof для значения типа А писать «Б» и для значения типа Б писать «Б». Это я называю врать. Чтобы ни говорил typeof, null — это никаким боком не объект. Смотри цитату выше.
Undefined. Почему? Потому что а — примитив. Во второй строке он был сковертирован в объект, которому назначили свойство. В третьей строке этот примитив был опять сконвертирован в объект, у которого спросили несуществующее свойство.
Это же простой маркетинг. Один надавил на одно, другой на другое, а по сути задачи-то они решают одни и теже. Разная идеология и стиль, поэтому они и существуют.
Если вы посмотрите внимательно на спеку SVG и VML, то очень бысто откажетесь от этой идеи.
typeof function(){} === «function»
В Javascript нет такого типа как function.
Вот что делает typeof:
Return a string determined by Type(Result(4)) according to the following table:
Undefined — «undefined»
Null — «object» (!!!)
Boolean — «boolean»
Number — «number»
String — «string»
Object (native and doesn’t implement [[Call]]) — «object»
Object (native and implements [[Call]]) — «function» (!!!)
Почему typeof такая ненадёжная я не знаю, но она такая.
Вот и всё. Тема закрыта.
Я, к сожалению, не могу обсуждать вашу модель языка, я не телепат. Я могу только говорить про то, что написано в спецификации.
Null — примитив
Функция — объект
В чём по-вашему разница между функцией и обёктом?
null — это примитивное значение типа null. Такое же как «1» или «false».
» но в то же время и специальный объект, ничего не умеющий и ничего не занимающий в памяти.
Откуда такая уверенность, что null ничего не занимает в памяти?
Null Value
The null value is a primitive value that represents the null, empty, or non-existent reference.
Согласно спецификации null не объект, а примитив. Typeof врёт.
Простой пример:
var a = 5; // a примитив
a.t = 3;
alert(a.t);
Что выдаст alert?
Undefined. Почему? Потому что а — примитив. Во второй строке он был сковертирован в объект, которому назначили свойство. В третьей строке этот примитив был опять сконвертирован в объект, у которого спросили несуществующее свойство.
Если бы а был объект alert бы выдал 3.
«Знание некоторых принципов освобождает от знания некоторых фактов»©
var objOrArr = {length: 10};
Массив это и есть объект, так же как и функция.