zoukankan      html  css  js  c++  java
  • 数组 call()、apply()、bind()的使用 this arguments

    数组(Array)

    数组也是一个对象,它和普通的对象一样,也是用来存储一些值的,不同的是普通对象是使用字符串作为属性名的,而数组使用数字作为索引来操作元素
    数组的存储性能比普通对象好,再开发中我们经常使用数组来存储一些数据
    索引就是从0开始的整数

    数组的操作:

    创建数组

    1
    2
    var arr = new Array();  
    var arr = [];

    向数组中添加元素,数组中的元素可以是任何数据类型(包括对象,函数,数组)
    语法:数组对象[索引] = 值;

    1
    2
    arr[0] = 123;  
    arr[1] = "hello";

    创建数组时直接添加元素
    语法:

    1
    var arr = [元素1,元素2....元素N];

    例子:

    1
    var arr = [123,"hello",true,null];

    读取数组中的元素

    语法:数组[索引],如果读取不存在的索引,他不会报错而是返回undefined

    使用length属性来获取和设置数组的长度

    获取长度:

    数组对象.length
    length获取到的是数组的最大索引+1
    对于连续的数组,length获取到的就是数组中元素的个数

    修改数组的长度

    数组.length = 新长度
    如果修改后的length大于原长度,则多出的部分会空出来
    如果修改后的length小于原长度,则原数组中多出的元素会被删除

    向数组的最后添加元素

    数组[数组.length] = 值;

    数组的方法

    自己去文档的数组对象中查看

    遍历数组

    遍历数组就是将数组中元素都获取到
    一般情况我们都是使用for循环来遍历数组

    1
    2
    3
    for(var i=0 ; i<数组.length ; i++){  
    //数组[i]
    }

    使用forEach()方法来遍历数组(更为方便)

    forEach方法需要一个函数作为参数,像这种由我们创建不由我们调用的函数,称为回调函数。

    数组中有几个元素,该回调函数就会被调用几次,
    每次调用时,都会将遍历到的信息以实参的形式传递进来,
    我们可以定义形参来获取这些信息。
    value:正在遍历的元素
    index:正在遍历元素的索引
    obj:被遍历对象

    详见文档

     call()、apply()、bind()的使用

    这两个方法都是函数对象的方法,需要通过函数对象来调用。
    当对函数调用call()和apply()都会调用函数执行。
    在调用call()和apply()时可以将一个对象指定为第一个参数,此时这个对象将会成为函数执行时的this。
    call()方法可以将实参在对象之后依次传递fun.call(obj, 参数1, 参数2)。
    apply()方法需要将实参封装到一个数组中统一传递 fun.apply(obj,[参数1,参数2 ])。
    bind 除了返回是函数以外,它 的参数和 call 一样,fun.bind(obj, 参数1, 参数2)()。

    - 可以使函数临时成为任意对象的方法使用。

    this的不同的情况:(由this的调用方式决定)

    1.它所在函数以函数的形式调用时,this是window
    2.它所在函数以方法的形式调用时,this就是调用方法的对象
    3.它所在函数以构造函数的形式调用时,this就是新创建的对象
    4.它所在函数以使用call和apply方法的形式调用时,this就是指定的那个对象
    5.在事件的响应函数中,响应函数是给谁绑定的,this就是谁(说明该函数是通过方法调用的符合情况2

    arguments

    在调用函数时,浏览器每次都会传递两个隐含的参数:
    1.函数的上下文对象 this
    2.函数封装的对象 arguments
    arguments是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度
    在调用函数时,我们所传递的实参都会在arguments中保存
    arguments.length可以用来获取实参的长度
    我们即使不定义形参,也可以通过arguments来使用实参,只不过比较麻烦
    arguments[0] 表示第一个实参
    arguments[1] 表示第二个实参
    它里面有一个属性叫做callee,这个属性对应一个函数对象,就是当前正在指向的函数对象

    学识浅薄,如有错误,恳请斧正,在下不胜感激。

  • 相关阅读:
    【前端】常用总结(二)
    【Golang】爬虫笔记
    ubuntu16.04安装SSH服务
    windows下配置pytorch环境
    使用VNC连接ubuntu16.4错误Authentication Failure问题
    window使用VNC远程ubuntu16.04
    ubuntu16.04安装nvidia显卡驱动
    python批量读取并显示图片,处理异常。
    将nii文件CT图像更改窗宽窗位之后保存成nii文件
    yaml.load与yaml.dump的用法
  • 原文地址:https://www.cnblogs.com/yin-jie/p/14620168.html
Copyright © 2011-2022 走看看