String是否继承自Javascript中的Object?

时间:2010-05-11 13:32:01

标签: javascript string inheritance oop

Object 是Javascript中所有对象的基类,就像其他语言一样,如Java& C#?

我在安装了Firebug的Firefox中尝试了以下代码。

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 是不同类型的?

3 个答案:

答案 0 :(得分:7)

是的,'str'是字符串literal,而不是字符串object

  

字符串文字可以访问所有字符串的对象和方法,因为javascript会暂时将字符串文字强制转换为字符串对象,以便运行所需的方法。

最后:

  

两者不同的是他们对新属性和方法的处理。与所有Javascript对象一样,您可以为任何String对象分配属性和方法。您无法向字符串文字添加属性或方法。他们被翻译忽略了。

阅读up more here

答案 1 :(得分:2)

该过程称为装箱/拆箱。

这意味着只要解释器​​/编译器看到用作Object的基本类型,它就会使用

new Object([primitive])

获取有效的实例。同样地,一旦你尝试将它用作原语(如在表达式中),它将使用

[boxedobject].valueOf()

获得原语。

在ECMAScript(javascript)中,Object的构造函数能够包装所有基元。

答案 2 :(得分:1)