zoukankan      html  css  js  c++  java
  • javascript笔记2-引用类型

      引用类型是一种数据结构,用于将数据和功能组织在一起。它描述的是一类对象所具有的属性和方法。Object是一个基础类型,Array是数组类型,Date是日期类型,RegExp是正则表达式类型,等。

    1. Object类型
      1.  创建:
        var dog = new Object();

        常应用于存储和传输数据。比如存储:

        var person = new Object();
                person.name = "Nicholas";
                person.age = 29;

        创建的第二种方式:(在创建时,属性名也可以是字符串格式,即:可以给属性名加引号。)

        var person = {
                    name : "Nicholas",
                    age : 29
                };
      2. 取出属性值:person["name"];或者:person.name;
    2. Array类型
    3. 同一个数组可以保存任意类型的数据(大杂烩)。
      1. 数组可以动态调整(多加一个数据,它自己就增长一个长度,不是死的。)。
      2. 创建:
        var stars=new Array();//方式1
        var stars=new Array(20);//方式2
        var stars=new Array("周杰伦","林俊杰","孙燕姿");//方式3
        var stars=Array(20);//方式4
        var stars=["周杰伦","孙燕姿","林俊杰"];//方式6
      3. 动态调整示例:
        var stars=["周杰伦","林俊杰","孙燕姿"];
        stars[1]="JJ";//动态改变(把林俊杰变为JJ)
        stars[3]="皮裤汪";//动态增长(加了一个长度)
        stars.length=1;//动态强制缩减(林俊杰、孙燕姿、皮裤汪强制移除,长度变为1)
      4. 检测数组:Array.isArray(value);
      5. 用join()把数组转换成有分隔符的字符串:
        var stars = ["周杰伦", "王尼玛", "张全蛋"];
                alert(stars .join(","));      //周杰伦,王尼玛,张全蛋
                alert(stars .join("-"));     //周杰伦-王尼玛-张全蛋
      6. 可以像栈一样使用数组(pop()出来,push()进去)。
      7. 可以像队列一样使用数组。(结合shift()和push()):
        var stars = new Array();                      //create an array
                var count = colors.push("周杰伦", "王尼玛");       //push two items
                alert(count);  //2
                
                count = stars .push("张全蛋");                  //push another item on
                alert(count);  //3
                
                var item = colors.shift();                     //get the first item
                alert(item);   //周杰伦
                alert(colors.length);  //2
        /**所谓栈变队列,其实就是把栈颠倒过来再拉取*/
      8. 排序。
        1. reverse()翻转数组顺序;(返回经过排序后的数组)
        2. sort()从小到大排序。但是是按字符串排序,不是按数字排序:(返回经过排序后的数组)。
          1  var values = [0, 1, 5, 10, 15];
          2         values.sort();
          3         alert(values);    //0,1,10,15,5

          要想按你预期的方式排序,可以给sort()里面加一个比较函数当作参数:

          function compare(value1, value2) {
                      if (value1 < value2) {
                          return -1;
                      } else if (value1 > value2) {
                          return 1;
                      } else {
                          return 0;
                      }
                  }
                  
                  var values = [0, 1, 5, 10, 15];
                  values.sort(compare);
                  alert(values);    //0,1,5,10,15

          简化版本的比较函数(sort只关心返回的是正数、负数还是0):

          function compare(value1,value2){
            return value2 - value1;  
          }
      9. 对数组的操作:联结、切片、拼接。
        1. 联结:使用concat,记忆:concat-->concatenate:连结,连锁。举例:
          var stars = ["周杰伦", "王尼玛", "张全蛋"];
                  var stars 2= stars .concat("太子妃", ["花千骨", "梅长苏"]);
                  
                  alert(stars);     //周杰伦,王尼玛,张全蛋      
                  alert(stars2);    //周杰伦,王尼玛,张全蛋,太子妃,花千骨,梅长苏
        2. 切片。使用slice,记忆:slice翻译:切片。举例:
          var stars = ["梅长苏", "誉王", "靖王", "霓凰", "飞流"];
                  var stars2= stars.slice(1);
                  var stars3= stars.slice(1,4);
                  
                  alert(stars2);   //誉王,靖王,霓凰,飞流(从第一个位置开始切)
                  alert(stars3);   //誉王,靖王,霓凰(从第1个位置切到第3个位置,4表示半封闭,不包含)
        3. 拼接。splice。功能强大。可以删除、插入、替换。
          1. 删除任意数量的项:比如:splice(0,2),删除第0,1项(半封闭区间)(返回删除项)。
          2. 指定位置插入任意数量的项:比如:splice(2,0,"周杰伦","王尼玛"),从第2个位置开始插入周杰伦、王尼玛两项。
          3. 指定位置插入任意数量的项且同时删除任意数量的项。比如:splice(2,1,"周杰伦","王尼玛"),从第2个位置删除1项,然后开始插入周杰伦、王尼玛两项。
      10. 位置方法:indexOf,lastIndexOf;
      11. 迭代方法:分为:全部合格才通过、任意一个合格就通过、过滤部分渣渣,一对一映射,迭代查询,缩减。
        1. 全部合格才通过:
          var numbers = [1,2,3,4,5,4,3,2,1];
                  
                  var everyResult = numbers.every(function(item, index, array){
                      return (item > 2);
                  });
                  
                  alert(everyResult);       //false

          上例中每一项都大于2才返回true。

        2. 任意一个合格就通过:
          var numbers = [1,2,3,4,5,4,3,2,1];
                  
                  var someResult = numbers.some(function(item, index, array){
                      return (item > 2);
                  });
                  
                  alert(someResult);       //true

          上例中,有一个大于2就返回true。

        3. 过滤部分渣渣:
          var numbers = [1,2,3,4,5,4,3,2,1];
                  
                  var filterResult = numbers.filter(function(item, index, array){
                      return (item > 2);
                  });
                  
                  alert(filterResult);   //[3,4,5,4,3]

          上例中,把大于2的都过滤掉。

        4. 一对一映射:
          var numbers = [1,2,3,4,5,4,3,2,1];
                  
                  var mapResult = numbers.map(function(item, index, array){
                      return item * 2;
                  });
                  
                  alert(mapResult);   //[2,4,6,8,10,8,6,4,2]

          上例中,给每一项都乘以2.

        5. 迭代:使用for-each。
        6. 缩减:reduce。
          var values = [1,2,3,4,5];
                  var sum = values.reduce(function(prev, cur, index, array){
                      return prev + cur;
                  });
                  alert(sum);//15

          累加求和返回,5项缩为1项。 

    4. RegExp类型
      1. var expression=/ pattern / flags;
      2. flags分三种:g(global全局模式,应用于所有字符串)、i(case-insensive,忽略字母大小写)、m(multiline,多行模式,一行检验完了接着下一行。)。举例:
        /**匹配字符串中所有'at'的实例*/
        var pattern1=/at/g;
        /**匹配第一个'bat'或'cat',不分大小写*/
        var pattern2 =/[bc]at/i;
        /**匹配所有以'at'结尾的3个字符组合,不分大小写*/
        var pattern3=/.at/gi;
      3. 模式中所有的元字符必须转义,元字符:( { [ ^ $ | ) ? * + . ] }
    5. Function类型
      1. 每个函数都是Function类型的实例,而且与其他引用类型一样,都有属性和方法。
      2. 函数的两种定义方法:方法1:
        function sum(a,b){
           return a + b;  
        }

        方法2:

        var sum=function(a,b){
         return a + b;
        }
      3. 函数没有重载。
    6. Boolean、Number、String:基本包装类型
      1. var a="Jay Chou is a superstar";
        var b=a.substring(0,8);

        上例中,a是基本类型,但是a可以调用substring方法,是因为,后台自动完成a的包装操作,创建String类型的一个实例。Boolean,Number也类似。

    7. 单体内置对象,不需要实例化,直接使用,如:Math,Global。
      1. 所有全局作用域中定义的函数、变量,都是Global对象的方法,比如:parseInt,isNaN等。
      2. eval()方法也是Global对象的方法,它负责解析javascript。
      3. Math对象是保存数学公式和相关信息的。它有很多方法, 如:min求最小值,max求最大值,ceil()向上取整,floor向下取整,round四舍五入,random取随机数。
  • 相关阅读:
    BZOJ3868 : The only survival
    BZOJ3740 : pku2842 N-dimension Matching N维匹配
    BZOJ2990 : [Ontak2010]Keyboard
    BZOJ3548 : [ONTAK2010]Party
    BZOJ3189 : [Coci2011]Slika
    BZOJ2679 : [Usaco2012 Open]Balanced Cow Subsets
    BZOJ2981 : [Poi2002]括号
    BZOJ4116 : [Wf2015]Tours
    BZOJ4107 : [Wf2015]Asteroids
    BZOJ4118 : [Wf2015]Window Manager
  • 原文地址:https://www.cnblogs.com/mesopotamia/p/5150030.html
Copyright © 2011-2022 走看看