• JavaScript高级 引用类型(一)《JavaScript高级程序设计(第三版)》


    引用类型是一种数据结构。它也被称作类。有时也被称作 对象的定义

    对象 是某个特定引用类型的实例。
     
    一、Object类型
    表达式上下文(expression context):指能够返回一个值
    语句上下文(statement context):表示一个语句块的开始(例:if语句)
    构造方式:
    创建Object类型实例的方法:
    1.普通方法 new object();
    2.对象字面量方法 var person = { name : "zjh" , age : "22" }   (表达式上下文)
    ps:第二种方法,一般只在考虑对象属性名的可读性时使用(在用对象字面量构造对象时候,实际上不会使用Object构造函数)
    访问对象属性的方法:
    1.点表示法  person.name  (一般都会使用该方法)
    2.中括号访问法 person['name'] -->属性名必须字符串形式 (有点:1.可以通过变量访问属性名 2.属性名可以包括关键字 空格 保留字)
    二、Array类型
    JS中的数组和其他语言的区别在于  它可以在同一个数组中放各种类型的数据,而且它的长度是动态的,不需要在构造时就定义。
    构造方式:
    1.new关键字 : var colors = new Array();  或者  var colors = new Array( ' red ' , ' blue ' ); 或者  var colors = new Array( 88 );  -->   数组长度 = 88    ps:可以省略 new关键字
    2.数组字面量 : var colors = [] ; 或者  var colors = [ ' red ' , ' blue' ] ;       (ps:和对象一样  在使用字面量时,不会调用Array构造函数)
    访问数组内数据的方法:
    索引法: colors[0]      -->从零开始
    ps:1.如果索引小于数组长度  则返回对应值。  否则返回undefined
         2.如果数组长度为3  如果把它设置为1  那么就会把后面两个数据移除。反之如果把长度设置很大,那么没有对应值得位置的值是undefined  
    检测数组的方法:
    1.      if (数组 instanceof Array){ }
    2.      Array.isArray( 数组 )
    继承的方法(转换)方法:(toLocalString()  、 toString()  、 valueOf()   )
    当使用以上三种的某一种方法时,都会返回数组的字符串 (数组的每一个项都会调用各自的以上三种方法)      (以   ,  分隔)  ps:在调用valueof()时 隐式调用了toString(),如果数组内的某个值为null 或者 undefined  则返回空字符串。
    栈方法:(LIFO last-in-first-out 后进先出的数据结构)
    数组中也实现了这种 。并提供了两个方法:
    push() : 接受任意数量的参数,返回推入参数后的数组长度。
    pop() : 弹出(返回)最后入栈的数据,同时数组长度-1。
    队列方法:(FIFO first-in-first-out 先进先出)
    数组也可以模拟队列。其实push()方法还是从队列末尾加入。同时还有一个方法:
    shift() : 能够取到(返回)队列最前面的一个数据,并弹出它 同时队列长度-1。
    【ps: 同时还有个unshift()方法  与push()作用一样,但是是在队列前部操作数据  so 它和pop()可以组合 模拟成一个从数据末尾取出数据  前端push数据的反向队列
    重排序方法:
    主要有两个方法:
    reverse() : 按照数组的顺序反向排序
    sort( 排序方法 ) : 
    特别注意:其中 nums中若为数值类型,有引号和没有引号是不一样的。使用compareC可以避免。
    操作方法:
    数组提供了多个可以复制、截取数组的方法。(都是先复制一个当前数组的副本,在副本上操作后返回值)
    concat() : 参数可以是普通数据 也可以是 数组
    slice() : 第一个参数是起始序列  第二个参数是末尾序列(可不写)
    splice() : 可以对数组的中间进行删除、插入、替换

    位置方法:
    提供两个 提供参数名和查找起点索引 的参数  返回找到到的数据序列 ,找不到就返回-1
    indexOf()  --> 从前往后找     lastIndexOf() -->从末尾往前找 :


    循环迭代方法:
    一共提供了五个迭代方法:(需要提供一个有三个参数的函数:数组项的值、该项在数组中的位置、数组对象本身)
    every() : 对数组中的每一项运行给定函数,每一项的操作都返回true,最终返回true
    some() : 对数组中的每一项运行给定函数,只要有一项返回true,最终就返回true
    filter() : 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
    forEach() : 对数组中的每一项运行给定函数,没有返回值
    map() : 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
    例:
    filter()

    map()
    缩小方法:
    提供了两个方法,都会逐一遍历数组中的每一项,然后构建一个最终返回的值。需要提供他们一个接收四个参数的函数(前一个值、当前值、当前值的索引、数组对象),需要注意的是,这个函数返回的任何值都会作为下一项的第一个参数,所以第一次迭代就发生在第二项上,第一项作为第一次迭代的第一个参数。
    reduce() :从第一项开始 
    reduceRight() : 从最后一项开始
    三、Date类型
    JS的Date类型是在Java 的java.util.Date类基础上构建的。也是用了UTC(1970开始的毫秒数)
    构造方式:
    var now = new Date();
    括号内不写,默认为此时此刻的时间。也可以在括号内指定时间,通过两个方法格式化:
    Date.parse()  和 Date.UTC()
    //自动调用Date.parse()
    //前两个参数必须写,月份基于0
    ps:取此时此刻时间提供了方法 Date.now()
    若浏览器不支持 可以 var star = + new Date();
    继承的方法:
    Date类型也继承了 toLocaleString() 、toString() 、valueOf()  方法
    但是在不同浏览器有不同的输出格式,使用价值不高。valueOf()取的是毫秒数,可以比较大小。
    日期格式化的方法:
    日期/时间组件方法:
        
       
     
    四、RegExp类型
    正则表达式
    构造方式:
    Per语法: var regExp = / pattern / flags ;
    pattern --> 可以是任何简单或者复杂的正则表达式......
    flags -->  有三种模式(并且一个正则表达式后面可以加上多种模式)
    g:全局模式,并非发现第一个匹配就停止,会一直匹配到末尾。    
    i :  不区分大小写模式。   
    m  :  多行模式,一行匹配完后,转到下一行。
     
    ps:转义字符包括 : 
    使用RegExp构造函数:(两个参数  ,要匹配的字符串模式 , 可选的标识字符串)。
    需要注意的是:使用字面量和使用构造函数得到正则表达式不一样,字面量构造的正则表达式字面量会始终共享一个RegExp实例。
    实例属性不会重置,所以在循环中,再次调用会失败。
    RegExp实例的属性:
    global:是否设置了g
    ignorecase:是否设置了i
    multiline:是否设置了m
    source:正则表达式的字符串表示
    lastIndex:表示开始搜索下一个匹配项的位置
    RegExp实例的方法:
    exec() :返回包含第一个匹配项信息的数组
    test() :返回是否匹配的布尔值
    属性:index 匹配的位置 ; input 被匹配的字符串 ; 数组中 第一项是与整个模式匹配的字符串。其余项是与整个模式匹配字符串的捕获组字符串(如果没有,那么就只有一项)
    ps:对exec()和test()而言,如果正则表达式有g模式,那么下一次再次调用该表达式,会从上次匹配到的位置开始匹配,如果没有使用g模式,再次调用该正则表达式,就从头开始匹配。
    继承的方法:(toLocalString()  、 toString()  、 valueOf()   )
    前两者返回正则表达式的字面量
    valueOf()返回正则表达式本身
     
    RegExp构造函数的属性:
    RegExp构造函数提供了一些属性,这些属性适用于作用域内的所有正则表达式,并且根据所执行的最近一次正则表达式操作而变化。
    ps:短属性名通过方括号访问。
    模式的局限性:
  • 相关阅读:
    UIActivityIndicatorView的使用
    几道面试题-考察JS的运用
    第六章-面向对象的程序设计(理解对象)
    webpack学习之——npm的安装依赖情况
    面向对象的编程(五)
    Javascript面向对象编程(四):非构造函数的继承
    面向对象的编程(三)—封装
    面向对象的编程(二)构造函数的继承
    面向对象的编程—封装
    第五章——引用类型
  • 原文地址:https://www.cnblogs.com/jarl/p/5941422.html
Copyright © 2020-2023  润新知