你不知道的JS系列 ( 28 ) - 内置对象

JavaScript 还有一些对象子类型,通常被称为内置对象

 

String
Number
Boolean
这三个内置对象的名字看起来和简单基础类型一样,实际上它们的关系更复杂

 

Object
Function
Array

 

Data
RegExp
Error

 

这些内置函数可以当作构造函数来使用,从而构造一个对应子类型的新对象

 

var strPrimitive = 'I am a string';
typeof strPrimitive; // string
strPrimitive instanceof String; // false

var strObject = new String('I am a string');
typeof strObject; // Object
strObject instanceof String; // true

// 检查 sub-type 对象
Object.prototype.toString.call(strObject); // [object String]

从代码中可以看到,strObject 是由 String 构造函数创建的一个对象。

 

原始值 'I am a string' 并不是一个对象,它只是一个字面量,并且是一个不可变的值,如果要在这个字面量上执行一些操作,比如获取长度,访问其中某个字符等,需要将其转换成 String 对象。

 

var strPrimitive = 'I am a string';
console.log(strPrimitive.length); // 13
console.log(strPrimitive.charAt(3)); // 'm'

可以直接在字面量上访问属性和方法,是因为引擎自动把字面量转换成 String 对象。数字字面量,布尔字面量也是如此

posted @ 2020-03-16 06:19  wzndkj  阅读(206)  评论(1编辑  收藏  举报