博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js中call、apply、bind的区别和应用
阅读量:6372 次
发布时间:2019-06-23

本文共 1234 字,大约阅读时间需要 4 分钟。

一、总体概述

  这三个方法都是改变函数本身的this指向的,但是略有不同

1、call

  使用方法:函数名.call(this指向,展开的参数列表);

  如果传入的this指向是null或者是undifined,那么this的指向将会是window

  

//call的应用        //这里的obj称之为类数组,类似于数组,实际上就是一个对象        var obj = {            0:10,            1:20,            2:29,            3:77,            length:4        }        //我们在数组的原型上加上加和的方法        Array.prototype.getSum = function () {            var res = 0;            for(var i = 0;i

2、apply和call类似,只不过call传递的是展开的参数列表,而apply传递的是数组的参数列表

//apply的应用        // 计算arr中的最大值,考虑到Math.max()可以实现,但是传递的参数只能是展开的参数列表        var arr = [11,12,35,66,99,45,44,2];        //方式一:es6的参数展开        var res = Math.max(...arr);        console.log(res);        //方式二:使用apply        var res2 = Math.max.apply(null,arr);        console.log(res2);

3、bind的应用并非马上执行,而是调用返回值加小括号时才会执行。

//bind的应用        var obj = {            name:"zs",            fn:function () {                setInterval(function () {                console.log(this.name);                },200)            },            fn2:function(){                setInterval(function () {                console.log(this.name);                }.bind(this),200)            }           }        obj.fn();        obj.fn2();

 

转载于:https://www.cnblogs.com/dhrwawa/p/10508453.html

你可能感兴趣的文章
如何在Hive中使用Json格式数据
查看>>
linux如何恢复被删除的热文件
查看>>
Eclipse(MyEclipse) 自动补全
查看>>
Struts2中dispatcher与redirect的区别
查看>>
地图点聚合优化方案
查看>>
Google Chrome 快捷方式
查看>>
备考PMP心得体会
查看>>
vue proxy匹配规则
查看>>
线上应用故障排查之一:高CPU占用
查看>>
Extend Volume 操作 - 每天5分钟玩转 OpenStack(56)
查看>>
IronPython教程
查看>>
squid via检测转发循环
查看>>
计算分页
查看>>
iptables 做nat路由器脚本
查看>>
数据结构(C语言版)第三章:栈和队列
查看>>
Stopping and/or Restarting an embedded Jetty in...
查看>>
Oracle存储过程中的数据集输入参数
查看>>
vsftp 配置
查看>>
VCSA中配置时间和时区,实测至6.5适用
查看>>
高并发IM系统架构优化实践
查看>>