JS引用类型总结

Object 类型

创建Object实例的方式:
  • var person = new Object();
  • var person = { name : 'Mike', age : 23 } //属性名可以使用字符串如 'age': 23

Array 类型

创建数组的基本方式:
  • 使用Array构造函数 (new可省略)
    • var ar = new Array()
    • var ar = new Array(3) //给定长度为3
    • var ar = new Array('red', 'yellow', 'green')
  • 数组字面量表示法
    • var ar = ['red', 'yellow', 'green']
    • var ar = []
    • var ar = [ , , , , ] //错误示范,会创建一个包含4或5项的数组,每一项是undefined
length属性:
  • length属性不只是可读的,通过设置length属性可以从数组的末尾移除项或向数组中添加新项,数组最多可包含4294967295个项。
检测数组:
  • value instanceof Array //假设只有一个全局环境
  • Array.isArray(value) //低版本浏览器尚未实现该方法
  • Object.prototype.toString.call(array) == '[object Array]'
转换方法:
  • ar.toString() //返回每一项调用toString方法得到的字符串然后逗号拼接
  • ar.toLocaleString() //返回返回每一项调用toLocaleString方法得到的字符串然后逗号拼接,在数组中包含类型为对象的项时差异较明显
  • ar.valueOf() //返回该数组
  • ar.join('&') //区分toString方法,逗号替换为&,分隔符可指定
    当数组中某一项为null或者undefined时,转换字符串时用空字符表示
栈方法和队列方法
  • push() //接收任意数量的参数,并逐个添加到数组末尾,返回数组长度
  • pop() //从数组中移除最后一项,返回移除的项
  • shift() //移除数组中第一项,返回移除的项
  • unshift() //接收任意数量的参数,并添加到数组开头,返回数组长度
重排序方法
  • ar.reverse() //数组顺序反转,在原数组上进行修改
  • ar.sort() //根据字符串比较来排序而非数值大小,在原数组上进行修改
    sort()接受一个比较函数,如果第一个参数应该位于第二个参数之前则返回一个负数
操作方法
  • concat() //传入数组或单个项,该方法会创建一个原数组副本并将这些数组的每一个和单个项都添加到结果数组中
  • slice() //可传入两个参数m、n,表示取数组的第m项到第n项,原数组不改变,m、n为负时,加上数组长度即可
  • splice(m,n,value) //从第m个项开始删除n个项,并从第m项开始插入变量value,返回一个数组包含删除的项,原数组改变
位置方法
  • indexOf() //接收两个参数,要查找的项和查找起点位置索引,查找时用===匹配
  • lastIndexOf //用法同上,逆序查找
迭代方法

5种迭代方法,每个方法接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象----影响this值,第一个参数函数接受三个参数:数组项的值、索引、数组对象本身,这5种方法都不会修改数组中包含的值。

  • every() //对数组中每一项运行给定函数,如果该函数对每一项都返回true则返回true
  • some() //对数组中每一项运行给定函数,如果该函数对任一项返回true则返回true
  • filter() // 对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组
  • forEach() //对数组中每一项运行给定函数,这个方法没有返回值
  • map() //对数组中每一项运行给定函数,返回每次函数调用的结果组成的数组
归并方法
  • reduce() //接收两个参数,一个在每一项上调用的函数和(可选的)作为归并基础的初始值,第一个参数函数接收4个参数,前一个值、当前值、项的索引、数组对象,此方法通常用于求数组中所有值之和
  • reduceRight() //遍历方向同reduce相反

Date类型

创建日期对象
  • var now = new Date() //传入参数为1970-1-1距离指定日期的毫秒数
  • parse() //此方法可以把表示日期的参数字符串'2017-(或/)3-28'或'3-28-2017'距离1970-1-1的毫秒数
  • UTC() //此方法可以把表示日期的参数(2017,2,28)转化为毫秒数
    Date构造函数会模仿以上两个函数,如果直接将他们的参数传给Date构造函数,也会在后台调用相应的方法parse和UTC。
  • Date.now() //返回调用这个方法的日期和时间的毫秒数
方法
  • toString() toLocaleString() valueOf() //前两个返回字符串,最后一个返回毫秒数
  • toDateString() //显示星期几、月、日、年
  • toTimeString() //显示时、分、秒、时区,同时也有toLocaleDateString()和toLocaleTimeString()方法,区别在于表示格式不同
  • toUTCString() //显示格式完整的UTC日期,toGMTString()与该方法等价,目的在于确保向后兼容
  • getTime()、setTime()、getSections()、setSections()......//日期对象的读写

RegExp类型

创建正则表达式

var expression = /\[bc\]at/i //字面量形式
var expression =new RegExp('\\\[bc\\\]at','i') //所有元字符必须双重转义,\需要变成\\\\\\\\

每个正则表达式可以带有一个或多个标志(flags):

  • g :全局模式,即模式会被应用于所有字符串,而非在发现第一个匹配项时立即停止。
  • i :不区分大小写模式,即匹配时忽略大小写。
  • m:多行模式,即在到达一行文本末尾时还会继续查找下一行中是否有与模式匹配的项。
RegExp实例属性
  • global:布尔值,表示是否设置了 g 标志
  • ignoreCase:布尔值,表示是否设置了 i 标志
  • multiline:布尔值,表示是否设置了 m 标志
  • lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起,该值在每次调用匹配方法时都会用到
  • source:正则表达式的字符串表示,按照字面量形式返回
元字符
  • ^ 匹配开头 /[^\,]+/表示不包含任何逗号的模式 $ 匹配结尾 . 表示任意字符
  • \s 匹配空格 \d 匹配数字 \b 匹配单词边界,前导字符在前,单词在后
  • * 匹配0个或多个前导字符 + 前导字符至少出现一次 ? 前导字符出现0次或1次
  • {m,n} 表示至少出现m次,最多出现n次 [0-9a-z] 定义匹配的字符串范围
RegExp实例方法
  • exec()
    · 专门为捕获组而设计,接受一个要应用模式的字符串为参数,返回包含第一个匹配项信息(首次匹配到的项)的数组,在没有匹配项(没有整个模式的匹配项)时返回null。
    · 数组第1项是与整个模式匹配的字符串,其它项是与模式中捕获组匹配的字符串,数组还包含两个额外属性 input 和 index ,分别为输入的字符串和整个模式匹配项在字符串中位置
    · 当模式设置了 g 标志,RegExp实例(模式)每执行一次 exec() 方法,他的的 lastIndex 属性就会改变一次;若没有设置 g ,则 lastIndex 恒等于0
  • test()
    · 接受一个字符串参数,模式匹配返回 true,否则 false
  • toString()、toLocaleString()、valueOf()
    · 都会像它是字面量形式创建的一样显示其字符串表示。
RegExp构造函数属性
长属性名 短属性名 说明
input $_ 最近一次要匹配的字符串
lastMatch $& 最近一次的匹配项
lastParen $+ 最近一次匹配的捕获组
leftContext $ ` input 字符串中 lastMatch 之前的字符串
rightContext $' input 字符串中 lastMatch 之后的字符串
multiline $* 布尔值,表示是否所有表达式都使用多行模式
$1 / $2 / $3 ··· 表示一个模式中第n个匹配的捕获组,在调用exec、test方法时会被自动填充
String类型的match()方法(接受一个Regexp实例或者字符串作为参数)
  • regexp 没有 g 标志
    · match() 方法就只在 stringObject 中执行一次匹配,返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本,除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。这里跟exec()方法类似
  • regexp 有 g 标志
    · match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串(区分子表达式),而且也没有 index 属性或 input 属性,regexp实例的lastIndex属性恒为0。不同于exec()方法
    · 在全局检索模式下,match() 即不提供与子表达式匹配的文本的信息,也不声明每个匹配子串的位置。如果您需要这些全局检索的信息,可以使用 RegExp.exec()。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,205评论 0 4
  • 本章内容 使用对象 创建并操作数组 理解基本的 JavaScript 类型 使用基本类型和基本包装类型 引用类型的...
    闷油瓶小张阅读 674评论 0 0
  • Hi, 各位。8月又到最后一周了,这个月你过得好吗?整月我都在默默码字,更文速度简直蹭蹭蹭变快呀[嘿哈]这个月呢,...
    佟小月阅读 798评论 0 0
  • 心里很难过,难过的要死,具体说不上是什么原因,我想把它发泄出来,说给别人听,我怕我说不清楚,我怕说不出为什么难过,...
    学霸与学渣的美好爱情阅读 285评论 0 0
  • 今天看了逻辑思维中古典讲的超级个体,看了一遍都是一些新概念,理解的不是很深刻,只到了朦朦胧胧理解的地步,未来,人们...
    鸡先森阅读 123评论 0 0