目录
Object(..) Function(..) RegExp()
原生函数类型:
- Number() String() Boolean() Symbol()
- Function() Array() Object() Error() Date() RegExp()
原生函数可以被当作构造函数来使用,但是构造出来的值都是对象类型的:
var str = new String('hello world')
typeof str // 'object'
Object.prototype.toString.call(str) // '[object String]'
var str = 'hello world'
typeof str // 'string'
Object.prototype.toString.call(str) // '[object String]'
通过构造函数(如 new String("hello world"))创建出来的是封装了基本类型值(如 "hello world")的封装对象。
内部属性 [[Class]]
所有 typeof 返回值为 "object" 的对象(如数组)都包含一个内部属性 [[Class]](我们可
以把它看作一个内部的分类,而非传统的面向对象意义上的类)。这个属性无法直接访问,
一般通过 Object.prototype.toString(..) 来查看。
注:以下 toString 表示 Object.prototype.toString
- 基本类型值被各自的封装对象自动包装,所以它们的内部 [[Class]] 属性值分别为 "String"、 "Number" 和 "Boolean"。
- 虽然 Null() 和 Undefined() 这样的原生构造函数并不存在,但是内部 [[Class]] 属性值仍然是 "Null" 和 "Undefined"。
toString.call(undefined) // '[object Undefined]'
toString.call(null) // '[object Null]'
toString.call(string) // '[object String]'
toString.call(new String('hello')) // '[object String]'
toString.call(number) // '[object Number]'

最低0.47元/天 解锁文章
278

被折叠的 条评论
为什么被折叠?



