引用类型

本篇将记录引用类型学习过程中所学到的知识

Object

  1. 在通过对象字面量定义对象的时候,并不会调用Object函数 详情见此

  2. 在js中可以使用方括号表示法来访问对象的属性,使用时应该将要访问的属性以字符串的形式放在方括号中,优点如下:

    • 可以通过变量来访问属性
    • 如果属性中包含会导致语法错误的字符,或者属性名使用的是关键字或者保留字,也可以使用方括号

      1
      person["first name"] = 'zhu';
    • 通常,除非必须使用变量访问属性,否则我们一般用点表示法

Array

  1. 使用对象的字面量同样不会调用Array的构造函数,原因同上
  2. 可以使用数组的length属性,从数组的末尾移除或者增加项
    • 1
      2
      3
      var colors = ['r','y','b'];
      colors.length = 2;
      console.log(colors[2]) //undefined

检测数组

  1. 使用Array.isArray()来检测是否为数组,不管在不在全局执行环境中创建

数组方法

  1. join() : 以不同的分隔符来连接数组的每一项成为字符串
  2. push() : 在数组的最后添加项,并返回修改后的数组的长度
  3. pop() : 从数组的末尾移除最后一项,并返回移除的项
  4. shift() : 移除数组的第一项,并返回该项
  5. unshift() : 向数组的前端添加任意个项,并返回新数组的长度
  6. reverse() : 反转数组项的顺序,返回反转后的新数组
  7. sort() : 接受一个比较函数,函数接受两个参数,如果第一个参数应位于第二个之前则返回一个负数,如果两个相等,返回0,反之返回一个正数
  8. concat() : 先创建一个数组的副本,然后将接受到的参数添加到副本的末尾,并返回最新的数组,不改变原来的数组
  9. slice() : 基于当前数组中的一个或多个项创建一个新数组,接受一个或两个参数,即要返回项的起始和结束位置,不影响原数组
  10. splice() : 会改变原来的数组
    • 删除:可以删除任意数量的项,指定两个参数: 要删除的第一项的位置和要删除的项数
    • 插入:三个参数:起始位置,0(要删除的项),要插入的项
    • 替换:三个参数:起始位置,要删除的项,要插入的任意数量项
  11. indexOf()/lastIndexOf() : 接受两个参数:要查找的项和(可选)表示查找起点未知的索引,使用全等来比较
  12. every()/filter()/forEach()/map()/some() : 迭代方法,接受两个参数:要在每一项上运行的函数(三个参数:该数组的每一项,索引,该数组)以及(可选)运行该函数的作用域对象——影响this的值,都不会修改数组中包含的值
    • every: 对数组的每一项运行给定的函数,如果该函数对每一项都返回true,就返回true
    • filter: 对数组的每一项运行给定的函数,返回该函数会返回true的项组成的数组
    • forEach: 对数组的每一项运行给定的函数,没有返回值
    • map: 对数组的每一项运行给定的函数,返回每次函数调用的结果组成的数组
    • some: 对数组的每一项运行给定的函数,如果该函数对任一项返回true,就返回true
  13. reduce()/reduceRight() : 会迭代数组的所有项,最后构建一个最终返回的值,两个参数:一个在每一项上调用的函数(4个参数:前一个值,当前值,项的索引,数组对象。这个函数返回的任何值都会作为第一个参数传递给下一项,第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个是数组的第二项)和(可选)作为归并基础的初始值。
    • reduce: 从第一项开始,逐个遍历到最后
    • reduceRight: 从最后一项开始向前遍历

Date

1.Date.parse() : 接受一个表示日期的字符串参数,返回相应的毫秒数

- ‘月/日/年’ / ‘月.日.年’ / ‘月*日*年’
- ‘英文月名 日,年’    如`January 12,2016`
- ‘英文星期几,英文月名 日 年 时:分:秒 时区’ 如:`Tue may 25 2016 00:54:08 GTM-0700`
- ‘扩展格式 YYYY-MM-DDTHH:mm:ss:sssZ’
  1. Date.UTC() : 返回毫秒数,参数分别是年份,基于0的月份,月中的哪一天(1-31),小时数(0-23),分钟,秒,毫秒。只有年和月是必须的,如果没有天数,默认天数为1,其他统统为0.

    • var y = new Date(Date.UTC(2016,5))
    • var all = new Date(Date.UTC(2015,5,3,01,01,08))
  2. Date.now() : 返回调用这个方法时的日期和时间的毫秒数(在不支持此方法的浏览器中,使用+操作符将Date对象转换为字符串同样有效果)

    • var d = +new Date()
  3. getTime() : 返回表示日期的毫秒数

  4. setTime(毫秒) : 以毫秒数设置日期,会改变整个日期
  5. getDate() : 返回日期月份中的天数
  6. getDay() : 返回日期中星期的星期几(0代表星期日);

RegExp

  1. 元字符需要转义:( [ { \ ^ $ | ) ? * + . ] }
  2. RegExp构造函数的模式的参数是字符串,所以在某些情况下要对字符进行双重转义,所有元字符必须双重转义
    • /\[bc\]at/ "\\[bc\\]at"
    • /\.at/ "\\.at"
  3. RegExp实例属性

    • source : 正则表达式的字符串表示,按照字面量形式
    • global
    • multiline
    • ignoreCase
    • lastIndex : 表示开始搜索下一个匹配项的字符位置,从0开始
  4. 实例方法

    • exec()
    • test()

Function

  1. 函数名仅仅是指向函数对象的指针
  2. 没有重载
  3. 函数声明提升
  4. 函数作为参数传入也可以返回
  5. 函数内部属性

    • arguments : 有一个callee属性,指向拥有这个arguments对象的函数

      1
      2
      3
      4
      5
      6
      function f(num){
      if(num<=1)
      return 1;
      else
      return num * arguments.callee(num-1)
      }
    • 函数对象属性caller : 保存着调用当前函数的引用

      1
      2
      3
      4
      5
      6
      7
      8
      function outer(){
      inner();
      }
      function inner(){
      alert(inner.caller)
      //alert(arguments.callee.caller)
      }
      outer(); //弹出outer()的源码 outer调用了inner
  6. 函数的属性与方法

    • length : 返回函数希望接受的命名参数的个数
    • prototype : 不可枚举,for-in 循环不到
    • call()/apply()
    • bind() : 创建一个函数的实例,其this值会绑定到传给bind()函数的值
      1
      2
      3
      4
      5
      6
      7
      window.color = 'red';
      var o = { color : 'lime' };
      function say_color(){
      alert(this.color)
      }
      var obj = say_color.bind(o);
      obj(); //lime

Number

  1. toFixed() : 按照指定的小数位返回数值的字符串表示(会四舍五入)
  2. toExponential() : 返回以指数表示法表示的字符串形式
  3. toPrecision() : 会返回以上两种的一种,接受一个参数,即表示数值的所有数字的位数,不包括指数部分

##String

  1. charAt() : 以单字符的形式返回给定位置的字符,接受位置的数值参数
  2. charCodeAt() : 得到字符的编码
  3. concat() : 连接字符串
  4. slice()/substr()/substring() : 截取字符串,substr(开始位置,截取个数),substring()会把所有的负值转换为0,而且会将小的数作为开始位置
  5. indexOf()/lastIndexOf() : 返回搜索给定的子字符串的位置
  6. trim() : 删除前置和后置空格
  7. toLowerCase()/toUpperCase()
  8. match()/search()/replace()
  9. split() : 两个参数,第二个为指定返回的数组的大小
  10. localeCompare() : 比较两个字符串,以字母表来排
  11. fromCharCode() : 接受一个或多个字符编码,并返回一个转换后的字符串
文章目录
  1. 1. Object
  2. 2. Array
  • 检测数组
  • 数组方法
    1. 1. Date
    2. 2. RegExp
    3. 3. Function
    4. 4. Number