Может кто-то объяснить, почему такой код
var a = 5;
alert(a.length);
возвращает undefined ? Вот документация MDN . Я понимаю, что тип Number это не тип "String", но и тип "Object" у нас согласно документации это не строка, но длину массива все же считают нормально.
В javascript не генерируется ошибка, если идет обращение к полю, которое отсутствует.
Вместо этого проверяются все прототипы объекта, и если ни в одном из них нет искомого поля - возвращается результат undefined.
Именно это и происходит в коде в вопросе.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей