引用类型是一种数据结构,用于将数据和功能组织在一起。它描述的是一类对象所具有的属性和方法。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); // count = stars .push("张全蛋"); //push another item on
      alert(count); // var item = colors.shift(); //get the first item
      alert(item); //周杰伦
      alert(colors.length); //
      /**所谓栈变队列,其实就是把栈颠倒过来再拉取*/
    8. 排序。
      1. reverse()翻转数组顺序;(返回经过排序后的数组)
      2. sort()从小到大排序。但是是按字符串排序,不是按数字排序:(返回经过排序后的数组)。
          var values = [0, 1, 5, 10, 15];
        values.sort();
        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);//

        累加求和返回,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取随机数。

javascript笔记2-引用类型的更多相关文章

  1. [Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法

    js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+ ...

  2. [Effective JavaScript 笔记] 第4条:原始类型优于封闭对象

    js有5种原始值类型:布尔值.数字.字符串.null和undefined. 用typeof检测一下: typeof true; //"boolean" typeof 2; //&q ...

  3. [Effective JavaScript 笔记] 第5条:避免对混合类型使用==运算符

    “1.0e0”=={valueOf:function(){return true;}} 是值是多少? 这两个完全不同的值使用==运算符是相等的.为什么呢?请看<[Effective JavaSc ...

  4. [Effective JavaScript 笔记]第3章:使用函数--个人总结

    前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...

  5. [Effective JavaScript 笔记]第27条:使用闭包而不是字符串来封装代码

    函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行.这使得富有表现力的高阶函数抽象如map和forEach成为可能.它也是js异步I/O方法的核心.与此同时,也可以将代码表示为字符串的形式 ...

  6. 从头开始学JavaScript 笔记(一)——基础中的基础

    原文:从头开始学JavaScript 笔记(一)--基础中的基础 概要:javascript的组成. 各个组成部分的作用 . 一.javascript的组成   javascript   ECMASc ...

  7. 【原】javascript笔记之Array方法forEach&map&filter&some&every&reduce&reduceRight

    做前端有多年了,看过不少技术文章,学了新的技术,但更新迭代快的大前端,庞大的知识库,很多学过就忘记了,特别在项目紧急的条件下,哪怕心中隐隐约约有学过一个方法,但会下意识的使用旧的方法去解决,多年前ES ...

  8. JavaScript高级编程——引用类型、Array数组使用、栈方法

    JavaScript高级编程——引用类型.Array数组使用.栈方法 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...

  9. JavaScript笔记目录

    JavaScript笔记目录 一.JavaScript简介 二.在HTML中使用JavaScript ...持续更新中,敬请期待

  10. 蛋糕仙人的javascript笔记

    蛋糕仙人的javascript笔记:https://www.w3cschool.cn/kesyi/kesyi-nqej24rv.html

随机推荐

  1. CentOS 7.x安装配置

    简述 VMware可以创建多个虚拟机,每个虚拟机上都可以安装各种类型的操作系统.安装方法也有很多种.下面,主要以ISO镜像安装为例,介绍CentOS 7.x的安装过程及相关的参数设置. 简述 创建虚拟 ...

  2. (11)lambda表达式用法

    * lambda 简述    lambda只是一个表达式,函数体比def简单很多    lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去.    lam ...

  3. Scala学习之: Hello Word!

    scala 是一门纯粹的面向对象的语言 , 结合了python和java的优点. 它和java的集合度很高,是一个在JVM上运行的非java语言(PS 其实scala也是用java编写的) 安装sca ...

  4. HDFS使用0

    创建上传文件的:

  5. listview加载性能优化ViewHolder

    在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局, 但当listview有大量的数据需要加载的时候 ...

  6. Ansible :一个配置管理和IT自动化工具

    编译文章:LCTT  https://linux.cn/article-4215-1.html 译者: felixonmars 文章地址:https://linux.cn/article-4215-1 ...

  7. Java集合涉及的类(代码)

    Customer: public class Customer implements Comparable{        private Integer customerId;        pri ...

  8. php定时执行PHP脚本一些方法总结

    本文章总结了php定时执行PHP脚本一些方法总结,有,linux中,windows,php本身的方法,有需要的朋友可参考参考. linux下定时执行php脚本 执行PHP脚本 方法1如果你想定时执行某 ...

  9. shaerpoint designer 无法创建 visio 2013工作流

    问题描述 当我想创建一个SharePoint 2013 工作流的时候,打开SharePoint 2013 Designer(一下简称SPD),发现没有SharePoint 2013 工作流的选项.原来 ...

  10. Windows API 文件处理

    CloseHandle 关闭一个内核对象.其中包括文件.文件映射.进程.线程.安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirect ...