引用类型是一种数据结构,用于将数据和功能组织在一起。它描述的是一类对象所具有的属性和方法。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. python 练习 29

    Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量赋值时 Number 对象将被创建: v ...

  2. JavaWeb学习-Tomcat

    打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

  3. Qt之Timers

    简述 QObject是所有Qt objects的基类,在Qt中提供了基础定时器的支持.使用QObject::startTimer(),你可以传递一个毫秒数间隔作为参数启动一个定时器.该函数返回一个唯一 ...

  4. Pictures of Ascii Art

    简述 指尖上的艺术 - 通过键盘上韵律般的敲敲打打,一幅幅美轮美奂的艺术作品便跃然于屏. 这样的画作,包含了无穷的创意,糅合了现代计算机科技与传统绘画艺术,难道还有比这更令人陶醉的美妙事物吗? 简述 ...

  5. enum使用总结

    enum的一般使用方法是它会占用最大的成员长度 然后我忘记的是enum还可以这样使用 enum ExctState { START, SUCCEED, FAILURE=6, REJECT, }; 这样 ...

  6. Objective-C:@class和#import

    @class和#import是OC中引用一个类的两种方式,其区别在于: #import相当于把被引用文件的内容拷贝到目标文件,这会包含被引用类的所有信息,包括被引用类的变量和方法(会降低编译性能 ): ...

  7. PHP 获取网上文件内容

    <?php $ch = curl_init("http://game.qq.com/comm-htdocs/js/game_area/moba_server_select.js&quo ...

  8. Cassandra——类似levelDB的基于p2p架构的分布式NOSQL数据库

    C: Consistency 一致性 • A: Availability 可用性(指的是快速获取数据) • P: Tolerance of network Partition 分区容忍性(分布式) 1 ...

  9. YUM安装提示PYCURL ERROR 6 - "Couldn't错误的解决办法

    当编译PHP时出现如下错误时,找不到头绪 这时,打开DNS   vim /etc/resolv.conf   添加一行nameserver 192.168.1.1 完成上一步,则解决该问题 或者:ec ...

  10. Google十大惊人产品

    国外资讯网站BusinessInsider刊文细数了谷歌惊世骇俗的十大产品,范围从无人驾驶汽车到太空电梯再到高空风力发电,每一项都令人无限神往,充满未来感. 以下是谷歌十大惊人产品: 众所周知,谷歌并 ...