zoukankan      html  css  js  c++  java
  • JavaScript引用类型

    Object类型

    创建Object对象有两种方式:

    • new Object()
    • 对象字面量表示法

    对象字面量表示法定义对象时,实际上不会调用Object的构造函数(Firefox2及更早版本除外)

    Array类型

    创建Array对象有两种方式:

    • new Array()
    • 数组字面量表示法

    检测数组类型

    instanceof操作符的不足:

    如果同个WEB页面存在多个框架,框架1里创建一个数组array,在框架2中用instanceof检测数组array,返回结果并不是true,而是false。这是因为array instanceof Array实际上相当于windows1.array instanceof windows2.Array

    Array.isArray()方法用来检测某对象是否时数组,它的不足之处是部分浏览器版本不支持该方法。

    转换方法

    • 数组转字符串

      toString()toLocalString()valueOf()方法可以将数组转换为字符串,每项以,分隔

    • 自定义分隔符

      join()方法,可以指定字符串的分隔符

    重排序

    • 反转数组

      reverse方法

    • sort方法

      该方法默认将每个元素转为字符串比较大小,较小值在前端。它也可以接受一个比较函数:函数接受两个参数,当返回值为-1时,说明前一项值比后一项值小,当返回值为0时,说明前一项值和后一项值相等,当返回值为1时,说明前一项值比后一项值大

    操作方法

    • concat

      获取当前数组的副本,并在这个副本末尾添加新元素,返回这个副本数组

    • slice

      返回当前数组的一个子序列数组,起始位置必须传入,结束位置是可选参数

    • splice

      操作数组中间的元素,可以实现删除、插入、替换三中操作。它必须传入起始位置、要删除的元素数量两个参数,插入或替换的内容是可选参数

    迭代方法

    迭代方法接受两个参数:

    1. 在每一项上运行的函数
    2. 第一个参数函数的执行环境的变量对象

    传入的函数接受三个参数:

    1. 数组元素值
    2. 元素在数组中的索引
    3. 数组对象本身

    缩小方法

    reduce()reduceRight()方法,会迭代数组的所有项,然后构建一个最终返回的值。它接受一或两个参数:

    1. 在每一项上调用的函数
    2. 可选的初始值

    被调用的函数接受四个参数:

    1. 前一个值
    2. 当前值
    3. 元素的索引
    4. 数组对象

    第一次迭代发生在数组的第二项上,函数返回的任何值都会作为第一个参数自动传给下一项。

    Date类型

    var date = new Date()
    

    当不传递参数时,新创建的对象自动获得当前日期和时间。如果想指定日期,则需要传入表示该日期的毫秒数。为了简化这一计算过程,ECMAScript提供了两个方法Date.parse()Date.UTC()将特定的日期转换为毫秒数,再通过Date构造函数创建新对象。

    var time = new Date(Date.parse("May 25,2018"));
    var time2 = new Date(Date.UTC(2018,10,13,23,22,10));
    

    Function类型

    定义函数有两种方式:

    • 函数声明

      function sum(arg1,arg2) {
      	body //函数体
      }
      
    • 函数表达式

      var sum = function(args1,arg2) {
      	body //函数体
      };
      

    函数声明和函数表达式的差异是解析器读取时间不一样。解析器在执行环境中加载数据时,会率先读取函数声明,并使其在执行任何代码前可用,这称为函数声明提升;至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。

    函数内部属性arguments和this

    • arguments属性

      它的主要用途是保存函数参数。arguments对象的callee属性,是一个指针,指向拥有这个arguments对象的函数对象。

    • this

      this表示调用当前函数的对象。

    apply、call、bind

    这三个方法都可以指定this表示的对象,applycall方法会首先指定this表示的对象,然后再执行当前函数;bind方法会创建一个函数的实例,其this值会被绑定到指定的对象上,这个函数不会自动执行,必须再手动调用一次。

    基本包装类型

    var s1 = "some text";
    var s2 = s1.substring(2);
    

    当执行流访问到第二行时,首先创建String包装类型的一个实例,然后在实例上调用指定的方法,最后销毁这个实例。

    引用类型与基本包装类型的主要区别就是对象的生存期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即销毁。这意味着我们不能在运行时为基本类型值添加属性和方法。

    单体内置对象

    内置对象指由ECMAScript实现提供的、不依赖宿主环境的对象,这些对象在ECMAScript程序执行前就已经存在了。这意味着开发人员不必显示地实例化内置对象,因为它们已经实例化了

    在所有代码执行之前,作用域中就已经存在两个内置对象:GlobalMath。在大多数ECMAScript实现中都不能直接访问Global对象;不过,Web浏览器实现了承担该角色的windows对象。全局变量和函数都是Global对象的属性。

  • 相关阅读:
    js、css引用文件的下载方式
    前端参考
    Mac配置
    chrome devtools调试Android Webview再也不FQ了!URL映射 + appspot devtools镜像解决chrome调试安卓前端HTML5页面时白屏的问题
    MyBatis 日志输出
    MyBatis 简单原理介绍
    MyBatis resultType 的使用
    sql必知必会笔记
    MyBatis基础:使用java提供的ThreadLocal类优化代码
    Mybatis基础(2)
  • 原文地址:https://www.cnblogs.com/weixia-blog/p/9757671.html
Copyright © 2011-2022 走看看