你不知道的JavaScript-----原生函数

目录

原生函数类型:

内部属性 [[Class]]

封装对象包装

拆封

原生函数作为构造函数

Array(..)

Object(..) Function(..) RegExp()

Date(..) Error(..)

Symbol(..)


原生函数类型:

  • 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]'
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端 贾公子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值