Javascript知识整理——原生函数

常见的原生函数有

  • String()
  • Number()
  • Boolean()
  • Array()
  • Object()
  • Function()
  • RegExp()
  • Date()
  • Error()
  • Symbol() ————Es6引入

通过构造函数(如new String('abc')创建出来的是封装了基本类型值(‘abc’)的封装对象

内部属性[[Class]]

所有typeof返回值为'object'的对象都包含一个内部属性[[Class]],通过Object.prototype.toString()来查看

Object.prototype.toString().call([1,2,3]) //[object Array]
Object.prototype.toString().call(/regex-literal/i); // [object RegExp]
大多数情况下,对象的内部[[Class]]属性和创建该对象的内建原生构造函数相对应。

基本类型值如null和undefined的[[Class]]

Object.prototype.toString.call(null) //"[object Null]"
Object.prototype.toString.call(undefined) //"[object undefined]"

其他基本类型值(字符串、数字和布尔)的[[Class]]指向其包装对象的[[Class]]

Object.prototype.toString.call('abc')//[object String]
Object.prototype.toString.call('42') //[object Number]
Object.prototype.toString.call(true) //[object Boolean]

封装对象的注意点

创建的封装对象为真值
var a = new Boolean(false)
if(!a){console.log('Oops');//执行不到这里

拆封

若要得到封装对象中的基本类型值,可以使用valueOf()函数
var a = new String('abc')
a.valueOf() //"abc"

原生函数作为构造函数

Array构造函数只带一个数字参数的时候,该参数会被作为数组的预设长度
只要将length属性设置为超过实际单元数的值,就能隐式地制造出空单元(稀疏数组)
除非万不得已,否则不要使用Object(..)/Function(..)/RegExp(..)

构造函数Function只有在极少数情况下很有用,比如动态定义函数参数和函数体的时候
两列建议使用常量形式(如/^a*b+/g)来定义正则表达式,不仅语法简单,执行效率也更高

Date(..) 和 Error(..)

这两个原生构造函数作用比其他的大很多,因为没有对应的常量形式可以代替

  • Date(..)主要用来获得当前的Unix时间戳
  • Error(..)创建错误对象主要是为了获得当前运行栈的上下文,上下文信息包括函数调用栈信息和产生错误的代码行号,以便于debug,常与throw一起使用 throw new Error('x wasn't provided');
Symbol(..)

Symbol()比较特殊,如果带new运算符的话会报错

原生原型

String.prototype的方法
  • String#indexOf(..)
    在字符串中找到指定字符串的位置
  • String#CharAt(..)
    获得字符串指定位置上的字符
  • String#substr(..)、String#substring(..)和String#slice(..)
    获得字符串的指定部分
  • String#toUpperCase()和String#toLowerCase()
    将字符串转换为大写或小写
  • String#trim()
    去掉字符串前后的空格,返回新的字符串

以上方法均不改变原字符串的值,而是返回一个新字符串

某些原生原型并非普通对象那么简单

Function.prototype是一个函数,RegExp.prototype是一个正则表达式,而Array.prototype是一个数组,三者都是空的,是很好的默认值

本文参考《你不知道的JS中卷》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,267评论 0 4
  • 第三章 基本概念 3.1 语法 ECMAScript标识符一般采用驼峰大小写格式,也就是第一个字母小写,剩下的每个...
    小雄子阅读 568评论 0 1
  • 本章内容 使用对象 创建并操作数组 理解基本的 JavaScript 类型 使用基本类型和基本包装类型 引用类型的...
    闷油瓶小张阅读 694评论 0 0
  • 你离我很远 我听着手机里你几分钟前发来的语音留言 但我心想 此时你在想什么呢 看见什么听见什么 打开视频界面 你的...
    Amouropre阅读 152评论 0 0
  • L斜靠在沙发上,说:“你不曾吃过真正的苹果。” 我暂时放过嘴里那半个在空气中慢慢氧化变色的苹果,空出嘴反驳: "我...
    千光一阅读 420评论 0 0