美文网首页
2018-11-26红宝书第5章引用类型总结

2018-11-26红宝书第5章引用类型总结

作者: _CCoder | 来源:发表于2018-11-26 21:29 被阅读3次

第五章 引用类型

  • 新对象是使用new操作符后面跟一个构造函数来创建的,该函数出于创建新对象的目的而定义

5.1 Object类型

  • 创建方法:1、new 后面跟构造函数;2、对象字面量

5.2 Array类型

  • new Array(3)创建包含3项的数组
  • 数组项省略或越界或访问超出数组长度的索引,没值的项都会保存undefined
  • length属性不只是可读的,可以从数组的末尾移除项或添加新项
    var colors = ["red","blue","green"];
    colors[colors.length] = 'black';
  • 当把一个值放在超出当前数组大小的位置上时,数组就会重新计算其长度值,即长度值等于最后一项索引+1

常用方法:

  • Array.isArray()
  • toString()创建一个数组值以逗号分隔的字符串
  • join(),接收一个参数,使用不同分隔符构建拼接字符串,默认使用逗号
  • 栈方法:
    • push()方法接收任意数量的参数,逐个添加到数组末尾,返回修改后数组长度
    • pop()方法移除末尾最后一项,减少length值,返回移除的项
  • 队列方法:
    • shift(),移除数组第一项并返回该项
    • unshift("red","green"),能够在数组前端添加任意个项并返回新数组长度,多项的话从左向右推入
  • 重排序方法:
    • reverse() 方法反转数组
    • sort() 默认按升序,比较的是字符串
    • 比较数值或其他类型接收一个比较函数,接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个参数之后则返回一个正数
    // 数值比较
    function compare(value1,value2) {
      return value2- value1; // 降序
    }
    
    • 两个方法返回值都是排序之后的数组
  • 操作方法:
    • concat() 拼接数组,返回新数组
    • slice() 接收1或2参数,返回数组切片,切片数组不包含第二个参数的索引位置。如果传入负数,则用该负数+数组长度确定位置,可以实现从后向前切片
    • splice(起始位置,要删除的项数,(要插入的任意数量的项))
      向数组中部插入项。始终返回一个数组,包含从原始数组删除的项
  • 位置方法:
    • indexOf,lastIndexOf(要查找的项,(查找起点位置索引))
      前者从数组开头向后查找,后者反之,使用全等操作符比较
      没有找到返回-1
  • 迭代方法:
    • 每个方法接收两个参数1.在每一项上运行的函数,2.(可选)运行该函数的作用域对象,影响this值
    • 传入的函数接收三个参数:1.数组项的值;2.索引;3.数组对象本身
      1. every() 该函数对每一项返回true,则返回true
      2. filter() 返回该函数会返回true项组成的数组
      3. forEach(),没返回值
      4. map(),返回每次函数调用的结果组成的数组
      5. some(). 如果该函数任一项返回true,则返回true
  • 归并方法
    • reduce() reduceRight(),前者从头返后遍历,后者反之
    • 迭代所有项,构建一个最终返回的值
    • 接收两个参数,每一项上调用的函数和(可选)作为归并基础的初始值
    • 第一次迭代发生在数组第二项上,参数函数4个参数:前一个值,当前值,索引,数组对象。函数返回任何值都会作为第一参数自动传给下一项

5.3 Date类型

  • Date.parse() 接收一个表示日期的字符串参数,返回相应日期毫秒数
  • Date.UTC() 同样返回日期毫秒数,但接受的是多个数值参数,只有年和月,第1第2参数是必须的
  • Date.now()
  • toString(),toUTCString返回带有时区信息的日期和时间
  • valueOf() 返回日期毫秒数

5.4RegExp类型

  • 贪婪匹配
  • g\i\m 三个标志,全局,区分大小写,多行模式
  • 所有元字符都要转义
  • 两种创建方式:1、字面量形式/.../gim;2、RegExp构造函数,两个参数,一个是要匹配的字符串模型,第二个是可选的标志字符串(要对\进行转义 -> \\)

实例属性

  • lastIndex: 表示开始搜索下一个匹配项的字符位置

实例方法

  • exec()
    为捕获组设计,接收一个参数,即要应用模式的字符串,返回包含第一个匹配项信息的数组,没有匹配的情况下返回null。在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串
    • 每次只返回一个匹配项,有g时多次调用exec都会在原字符串中继续查找新匹配项,没有g则始终返回第一个匹配项信息
  • test()
    接收一个字符串参数,在模式与该参数匹配的情况下返回true,否则返回false
  • toLocaleString(),toString()都会返回正则表达式字面量

构造函数属性

  • RegExp.input/lastMatch/lastParen/leftContext/....
  • ^和$表示匹配字符串的开头和结尾

5.5 Function类型

  • 函数实际上是对象,是Function类型的实例
  • 函数是对象,函数名是指针

函数声明与函数表达式

  • 解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问)
  • 函数表达式,则必须等到解析器执行到它所在的代码行
  • 函数声明提升:即使声明函数的代码在调用它的代码后面,js引擎也能把函数声明提升到顶部

函数内部属性

  • arguments主要用途是保存参数,但这个对象还有一个名叫callee的属性,是一个指针,指向拥有arguments对象的函数,即指向这个函数自己。在递归调用时可以解除函数名的耦合
  • this 是调用函数的作用域,不是函数内部的作用域
    this引用的是函数执行的环境对象,在全局执行就引用全局对象,在某一个对象内部调用,就引用的是这个对象
  • 函数名只是一个包含指针的变量
  • caller
    这个属性保存着调用当前函数的函数的引用,即谁调用了这个函数就保存谁
  • arguments.callee即函数自己,arguments.callee.caller即这个函数的调用者

函数属性和方法

  • length :希望接收的命名参数个数
  • prototype :保存对象所有实例方法的真正所在
  • prototype不可枚举,for in 无法发现
  • apply(this,参数数组)和call(this,参数1,参数2,...) ,用途都是在特定作用域中调用函数,实际上等于设置函数体内this对象的值
  • call()和apply()作用相同,区别仅在于接收参数的方式不同
  • sayColor.call(obj)相当于改变了函数内部this的值,this变成了obj
  • bind(),这个方法会创建一个函数实例,其this值会被绑定到传给bind()函数的值。var objectSayColor = sayColor.bind(o); objectSaycolor()

基本包装类型

  • 三个:Boolean,Number,String
  • 直接访问基本类型的变量时,后台会创建一个实例,只存在于一行代码的执行瞬间,然后立即被销毁
  • 每次访问都会创建一个新的实例
  • 所有基本包装类型在转换为布尔值时都是true

Number类型

  • toFixed() 方法,保留小数点位数
  • toExponential() ,返回指数表示法(e表示法)
  • toPrecision(表示数值所有数字位数) 根据数值自动判断格式

String类型

  • 常用方法:
    • charAt()、 charCodeAt()
    • slice(),substr().substring()
      都接受两个参数,第一个是子字符串开始的位置,第二个表示子字符串到哪里结束。substr(),第二个参数表示返回的字符个数
    • indexOf(),lastIndexOf(),从一个字符串中搜索给定字符串,没找到返回-1,找到返回第一次出现索引位置
    • match(),接收一个正则表达式或RegExp对象,与调用RegExp的exec()方法相同
    • search(),返回第一个匹配项索引
    • replace(正则或字符串,字符串或函数)
    • split(),基于分隔符分隔子字符串,放到一个数组中返回
    • localeCompare()

单体内置对象

Global对象

  • 所有全局作用域中定义的变量和函数,都是global对象的属性
  • encodeURI(),encodeURIComponent()
  • decodeURI(),decodeURIComponent()
  • 所有原生引用类型的构造函数,都是Global对象的属性

Math对象

  • Math.min(),max(),一组数中最大最小值
  • 求一个数组的最大最小值:Math.max.apply(Math,array);
  • Math.ceil(),floor(),round(),
  • Math.random(),返回大于等于0小于1的随机数

值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)

相关文章

网友评论

      本文标题:2018-11-26红宝书第5章引用类型总结

      本文链接:https://www.haomeiwen.com/subject/qiwbqqtx.html