JavaScript高级程序设计——知识点整理(Part 2)

Date类型

  • 创建日期对象
    1. Date()构造函数必须传入表示该日期的毫秒数(也可以传递表示日期的字符串,会自动转化为毫秒数)
    2. 字符串日期转化为毫秒数之后可以作为Date()构造函数的参数,方法有两种:Date.parse()和Date.UTC()
    3. 直接调用new Date(表示日期的字符串),会根据参数自动选择以上两种方法转化为毫秒数作为构造函数的参数
  • 获得当前时间转化成的毫秒数
    1. Date.now()
    2. +new Date()(日期类型+转毫秒数)
    3. Number(new Date())
    4. new Date().getTime()
    5. new Date().valueOf()
  • 继承的方法
    1. toString()返回带有时区信息的日期和时间
    2. toLocaleString()返回不包含时区信息的日期和时间
    3. valueOf()返回日期的毫秒表示
      • 因为比较对象大小时,会先调用对象的valueOf()方法,然后再比较大小,所以日期可以直接用”<”和”>”比较大小

RegExp类型

  • 实例方法
    1. exec(),需要知道匹配项的文本内容时使用
    2. test(),只想知道字符串与某个模式是否匹配时使用

Function类型

  • 函数是对象,函数名是指针
  • 没有重载,函数名指针重新指向了一个新对象
  • 解析器会率先读取函数声明,使其在执行任何代码之前可以访问,只有到解析器执行到函数表达式所在的代码行,才会解释函数表达式
  • 函数内部属性
    1. argument.callee是一个指针,指向拥有这个argument对象的函数,可以动态指向当前函数名称
    2. this引用的是函数据以执行的环境对象
  • 函数属性
    1. length表示函数希望接收的命名参数的个数
    2. prototype是保存所有实例方法的真正所在
  • 函数方法

    • apply()接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组
    • call()接收的是每个参数(即将参数数组逐个列举出来)
    1. 用途是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
    2. 会直接执行,但与原函数作用域不同
    • bind()将函数的作用域改为传递给bind()的值

    不会执行,而是创建一个函数的实例

基本包装类型

  • 特殊的引用类型:Boolean、Number、String
  • 访问它们属性或方法时,会先创建一个实例,然后访问,然后销毁,生命周期只有一行

  • Boolean类型
  • Number类型
    • toFixed()按照指定的小数位返回数值的字符串表示
    • toExponential()按照指定的小数位返回指数表示法的字符串
    • toPrecision()可能返回固定大小(fixed)格式,也可能返回指数(exponential)格式,参数为所有数字的位数(不包括指数部分)
  • String类型

    • 属性
      1. length属性表示字符串包含多少个字符(双字节字符也算一个字符)
    • 字符方法
      1. charAt()和charCodeAt()
      2. ECMAScript5支持方括号加数字索引(方便)
    • 字符串操作方法
      1. 拼接
        • concat()
        • +(方便)
      2. 基于子字符串创建新字符串(相当于截取,但不改变原字符串)
        • slice()开始位置,结束位置,左闭右开
        • substring()开始位置,结束位置,左闭右开
        • substr()开始位置,子字符串长度
    • 字符串位置方法

      1. indexOf()和lastIndexOf(),找到第一个匹配的字符串就停止,返回字符串的位置,没有找到则返回-1
      2. 第二个参数表示从哪个位置开始查找,可以循环调用来找到所有匹配的字符串,代码如下
      var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit";
      var positions = new Array();
      var pos = stringValue.indexOf("e");
      while(pos > -1) {
          positions.push(pos);
          pos = stringValue.indexOf("e", pos + 1);
      }
      alert(positions);    //"3,24,32,35,52"
    • trim()方法

      1. 创建一个字符串的副本,删除前置及后缀的所有空格
    • 字符串大小写转换方法
      1. toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase()
    • 字符串的模式匹配方法

      • match()只接受一个参数,要么是正则表达式,要么是一个RegExp对象,返回一个数组,第一项是与整个模式匹配的字符串,之后的 每一项保存着与正则表达式中的捕获组匹配的字符串
      • search()接受参数与match()相同,返回字符串中第一个匹配项的索引,如果没找到则返回-1
      • replace()接受两个参数,第一个参数可以是RegExp对象或者一个字符串,第二个参数可以是一个字符串或者一个函数,如果第一个 参数是字符串,那么只会替换第一个子字符串,要想替换所有子字符串,就要提供一个正则表达式,而且要指定全局(g)标志
      function htmlEscape(text) {
          return text.replace(/[<>"&]/g, function(match, pos, originalText) {
              switch(match) {
                  case "<":
                      return "<";
                  case ">":
                      return ">";
                  case "&":
                      return "&";
                  case "\"":
                      return """;
              }
          });
      }
      alert(htmlEscape("

      Hello world!

      "
      )); //<p class="greeting">Hello world!</p>
      • split()
    • localeCompare()
    a.localeCompare(b);  //a在b的前面则返回负数,即前后顺序正确的情况下返回负数,大多数情况是-1
    • fromCharCode()
      1. 将字符编码转换成一个字符串,可以传入多个参数

单体内置对象

  • Object、Array、String
  • Global对象
    1. isNaN()、isFinite()、parseInt()、parseFloat()
    2. URI编码方法
      • encodeURI()用于整个URI,不会对本身属于URI的特殊字符进行编码
      • enodeURIComponent()用于对URI中的某一段,会对它发现的任何非标准字符进行编码
    3. URI解码方法
      • decodeURI()
      • decodeURIComponent()
    4. eval()方法
      • 接受一个参数,要执行的ECMAScript或JavaScript字符串
    5. Global对象的属性
    6. window对象
  • Math对象
    1. Math对象的属性
    2. min()和max()方法
    3. 舍入方法
      • Math.ceil()向上取整
      • Math.floor()向下取整
      • Math.round()四舍五入
    4. random()方法
值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)

function selectFrom(lowerValue, upperValue) {
    var choices = upperValue - lowerValue +1;
    return Math.floor(Math.random() * choices + lowerValue);
}
var num = selectFrom(2, 10);
alert(num);  //介于2和10之间(包括2和10)的一个数值

你可能感兴趣的:(读书笔记)