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 是不同类型的?
答案 0 :(得分:7)
是的,'str'是字符串literal
,而不是字符串object
。
字符串文字可以访问所有字符串的对象和方法,因为javascript会暂时将字符串文字强制转换为字符串对象,以便运行所需的方法。
最后:
两者不同的是他们对新属性和方法的处理。与所有Javascript对象一样,您可以为任何String对象分配属性和方法。您无法向字符串文字添加属性或方法。他们被翻译忽略了。
阅读up more here。
答案 1 :(得分:2)
该过程称为装箱/拆箱。
这意味着只要解释器/编译器看到用作Object的基本类型,它就会使用
new Object([primitive])
获取有效的实例。同样地,一旦你尝试将它用作原语(如在表达式中),它将使用
[boxedobject].valueOf()
获得原语。
在ECMAScript(javascript)中,Object的构造函数能够包装所有基元。
答案 2 :(得分:1)