Наследует ли String объект в Javascript?
Является Object базовым классом всех объектов в Javascript, как и другой язык, такой как Java и С#?
Я попробовал под кодом в Firefox с установленным Firebug.
var t = new Object();
var s1 = new String('str');
var s2 = 'str';
console.log(typeof t);
console.log(typeof s1);
console.log(typeof s2);
Выход на консоль
object
object
string
Итак, s1 и s2 имеют разный тип?
Ответы
Ответ 1
Да, 'str' - это строка literal
, а не строка object
.
Строковый литерал имеет доступ ко всем строковым объектам и методам, потому что javascript будет временно лить строковый литерал как строковый объект, чтобы запустить желаемый метод.
Наконец:
В тех случаях, когда они отличаются друг от друга, их обработка новых свойств и методов. Как и все объекты Javascript, вы можете назначать свойства и методы любому объекту String. Вы не можете добавлять свойства или методы в строковый литерал. Интерпретатор игнорирует их.
Подробнее читайте здесь.
Ответ 2
Этот процесс называется бокс /unboxing.
Это означает, что всякий раз, когда интерпретатор/компилятор видит примитивный тип, используемый как объект, он будет использовать
new Object([primitive])
чтобы получить действительный экземпляр. И точно так же, как только вы попытаетесь использовать его как примитив (как в выражении), он будет использовать
[boxedobject].valueOf()
чтобы получить примитив.
В ECMAScript (javascript) конструктор Object может помещать все примитивы.
Ответ 3
Прочтите следующее: http://skypoetsworld.blogspot.com/2007/11/javascript-string-primitive-or-object.html
и это: https://developer.mozilla.org/en/JavaScript/Glossary#primitive
и это: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String