常用的原生函数有:
    • String()
    • Number()
    • Boolean()
    • Array()
    • Object()
    • Function()
    • RegExp()
    • Date()
    • Error()
    • Symbol()——ES6 中新加入的!
    实际上,它们就是内建函数。
    原生函数可以被当作构造函数来使用,但其构造出来的对象可能会和我们设想的有所出入:

    1. var a = new String( "abc" );
    2. typeof a; // 是"object",不是"String"
    3. a instanceof String; // true
    4. Object.prototype.toString.call( a ); // "[object String]"

    通过构造函数(如new String(“abc”))创建出来的是封装了基本类型值(如”abc”)的封装对象。
    注意:typeof 在这里返回的是对象类型的子类型。
    可以这样来查看封装对象:

    1. console.log(a)

    由于不同浏览器在开发控制台中显示对象的方式不同(对象序列化 , object serialization), 所以上面的输出结果也不太一样。
    注意:new String("abc") 创建的是字符串 “abc” 的封装对象,而非基本类型值 “abc”。