欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

javascript高级程序设计阅读总结

程序员文章站 2022-03-06 10:28:38
5章 引用类型 1、object类型 创建 1、var obj ={} 对象字面量 2、var obj = new Object(); new操作符 2、Array类型 创建 1、var arr = new Array(); 2、var arr = []; 检测数组 instanceof Array ......

5章 引用类型

1、object类型

  • 创建
    1、var obj ={} ---对象字面量
    2、var obj = new object(); ---new操作符

    2、array类型

  • 创建
    1、var arr = new array();
    2、var arr = [];

    检测数组

  • instanceof
  • array.isarray()

    转换方法

  • 所有对象都具有 tolocalestring() 、 tostring() 和 valueof() 方法
  • join() ----数组转为字符串

    栈方法、队列方法

  • push() 和 pop() ---向后推入(返回值为长度) 和 弹出(返回值为弹出值)
  • unshift() 和 shift() ---向前推入(返回值为长度) 和 弹出(返回值为弹出值)

    重排序方法

  • reverse() ---反转数组项的顺序
  • sort() ---按升序排列数组项
    //比较函数(数字排序)
    function compare1(value1, value2){
        return value2 - value1;
    }
    //对象按照对应的属性排序
    var arr =[{
        'name': 'ccc',
        'age': 12,
    },{
        'name': 'bbb',
        'age': 8,  
    },
    {
        'name': 'aaa',
        'age': 45,
    }]
    function compare(propertyname){
        return function(obj1,obj2){
            var value1 = obj1[propertyname];
            var value2 = obj2[propertyname];
            if(value1<value2){
                return -1;
            }else if(value1>value2){
                return 1;
            }else{
                return 0;
            }
        }
    }
    var resulte = arr.sort(compare('name'));
    console.log(resulte)

操作方法

  • concat()---基于当前数组中的所有项创建一个新数组(数组拼接)
  • slice()---接受一或两个参数,即要返回项的起始和结束位置(数组切割)
  • splice()
    • 删除 需提供第一项的位置,第二项为删除的个数
    • 插入 需提供第一项的位置,第二项为0,第三项为插入的内容
    • 替换 需提供第一项的位置,第二项为需替换的个数,第三项为插入的内容

      位置方法

  • indexof() 和 lastindexof() ---这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引

    迭代方法

  • every() :对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true 。
  • some() :对数组中的每一项运行给定函数,如果该函数对任一项返回 true ,则返回 true 。
  • filter() :对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
  • map() :对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
  • foreach() :对数组中的每一项运行给定函数。这个方法没有返回值。

    归并方法

  • reduce() 和 reduceright():这两个方法都会迭代数组的所有项,然后构建一个最终返回的值
    //reduceright() 从右开始
    var values = [1,2,3,4,5];
    var sum = values.reduce(function(prev, cur, index, array){
    return prev + cur;
    });
    alert(sum); //15

3、date类型

  • 创建
    var date = new date();
  • 日期格式化方法:
    • todatestring() ——以特定于实现格式显示星期几、月、日和年;
    • totimestring() ——以特定于实现的格式显示时、分、秒和时区;
    • tolocaledatestring() ——以特定于地区的格式显示星期几、月、日和年;
    • tolocaletimestring() ——以特定于实现的格式显示时、分、秒;
    • toutcstring() ——以特定于实现的格式完整的 utc 日期。
  • 日期/时间组件方法:
    • gettime() 返回表示日期的毫秒数;与 valueof() 方法返回的值相同
    • getfullyear() 取得4位数的年份(如2007而非仅07)
    • getmonth() 返回日期中的月份,其中0表示一月,11表示十二月
    • getdate() 返回日期月份中的天数(1到31)
    • getday() 返回日期中星期的星期几(其中0表示星期日,6表示星期六)
    • gethours() 返回日期中的小时数(0到23)
    • getminutes() 返回日期中的分钟数(0到59)
    • getseconds() 返回日期中的秒数(0到59)
    • getmilliseconds() 返回日期中的毫秒数
      set表示设置

4、regexp类型

  • 创建
    1.var expression = /pattern/flags;
    2.var expression2 = new regexp("pattern","flags");
  • 实例属性:
    • global :布尔值,表示是否设置了 g 标志。
    • ignorecase :布尔值,表示是否设置了 i 标志。
    • lastindex :整数,表示开始搜索下一个匹配项的字符位置,从 0 算起。
    • multiline :布尔值,表示是否设置了 m 标志。
    • source :正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
  • 实例方法:
    • exec() 接受一个参数,即
      要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回 null 。
    • test() 它接受一个字符串参数。在模式与该参数匹配的情况下返回true ;否则,返回 false
  • regexp 构造函数属性
    • input 属性返回了原始字符串;
    • leftcontext 属性返回了单词 short 之前的字符串,而 rightcontext 属性则返回了 short
      之后的字符串;
    • lastmatch 属性返回最近一次与整个正则表达式匹配的字符串,即 short ;
    • lastparen 属性返回最近一次匹配的捕获组,即例子中的 s 。

5、function类型

  • 创建
    1、function fn(){}
    2、var fn = function(){};
    3、var fn = new function(); //不推荐
  • 做为值的函数
    //对象按照对应的属性排序
        var arr =[{
            'name': 'ccc',
            'age': 12,
        },{
            'name': 'bbb',
            'age': 8,  
        },
        {
            'name': 'aaa',
            'age': 45,
        }]
        function compare(propertyname){
            return function(obj1,obj2){
                var value1 = obj1[propertyname];
                var value2 = obj2[propertyname];
                if(value1<value2){
                    return -1;
                }else if(value1>value2){
                    return 1;
                }else{
                    return 0;
                }
            }
        }
        var resulte = arr.sort(compare('name'));
        console.log(resulte)
  • 函数内部属性
    • this对象
    • arguments对象 -->arguments.callee代表函数指针
    • caller -->调用当前函数的函数的引用(arguments.callee.caller)
      //定义阶乘
      //递归算法 arguments.callee(优先使用)) 等价于 factory 
      function factory(num){
          var resulte = 0;
          if(num<=1){
              return 1;
          }else{
              return num * arguments.callee(num - 1);
          }
    
      }
      console.log(factory(4));
  • 函数的属性和方法
    • 属性
      • length 表示函数希望接收的命名参数的个数
      • prototype 保存它们所有实例方法
    • 方法
      • apply() --> 一个
        是在其中运行函数的作用域,另一个是参数数组(arguments 或者 数组)
      • call() --> 另一个是参数需逐个列举出来
      • bind() --> 这个方法会创建一个函数的实例,其 this 值会被绑
        定到传给 bind() 函数的值

6、基本包装类型

boolean类型 -- 建议不要使用

number类型

  • tofixed() -- 保留小数
  • toexponential() -- e 表示法
  • toprecision() --以上两者结合

    string类型

  • str.charat(i) 等价于 str[i] -- 返回对应下标的字符
  • str.charcodeat(i) --返回对应下标的字符编码
  • -----字符串操作方法-----
  • concat()
  • slice()、substr()、substring() --- 切割字符串方法,接收两个参数
    • 第一个开始位置,第二个结束位置。只传一个参数默认到最后,substr第二个参数指返回字符的个数
    • 如果有负数:slice()方法会将传入的负值与字符串的长度相加,----------------substr() 方法将负的第一个参数加上字符串的长度,而将负的第二个参数转换为 0,------------ substring() 方法会把所有负值参数都转换为 0
  • -----字符串位置方法-----
  • indexof() 、lastindexof() ---查找字符,返回下标,没找到返回-1
    • 都可以接收第二个参数,表示从字符串中的哪个位置开始搜索
  • trim() ---删除前置及后缀的所有空格
  • -----字符大小写转换方法-----
  • tolocaleuppercase() 和 touppercase() ---转大写,前者针对地区
  • tolocalelowercase() 和 tolowercase() ---转小写,前者针对地区
  • -----字符串的模式匹配方法-----
  • match() --- 只接收一个参数(正则表达式、regexp对象、字符串),返回一个符合匹配的数组,支持g,没找到返回null
  • search() ---只接收一个参数(正则表达式、regexp对象、字符串),返回一个第一次出现位置的下标,不支持g,没找到返回-1
  • replace() ---接收两个参数,第一个参数可以是一个 regexp 对象或者一个字符串,第二个参数可以是一个字符串或者一个函数
    //$& 匹配整个模式的子字符串
    //$' 匹配的子字符串之前的子字符串
    //$` 匹配的子字符串之后的子字符串
    //$n 匹配第n个捕获组的子字符串,其中n等于0~9
    //$nn 匹配第nn个捕获组的子字符串,其中nn等于01~99
    var text = "cat, bat, sat, fat";
    result = text.replace(/(.at)/g, "word ($1)");
    alert(result); //word (cat), word (bat), word (sat), word (fat)
  • split() ---基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个数组中,接受可选的第二个参数,用于指定数组的大小
  • localecompare() ---比较两个字符串 ,参数之前,返回-1,参数之后返回1,等于返回0
  • romcharcode() ---接收一或多个字符编码,然后将它们转换成一个字符串
    alert(string.fromcharcode(104, 101, 108, 108, 111)); //"hello"

7、单体内置对象

global 对象

  • uri编码方法
  • eval() 方法 ---可以执行放在字符串中的代码,简单理解就是去掉最外层的引号

    math 对象

  • math对象属性:
    javascript高级程序设计阅读总结
  • min() max()方法
  • 舍入方法:ceil()--向上取整 、floor()--向下取整、round()--四舍五入
  • random() ---返回大于等于 0 小于 1 的一个随机数
    javascript //获得min~max之间随机数公式 math.random()*(max - min) + min;
  • 其他方法:
    javascript高级程序设计阅读总结