博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《JavaScript总结》apply、call和bind方法
阅读量:4329 次
发布时间:2019-06-06

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

在JavaScript中,apply、call、bind这个三个方法,它们的作用都是为了改变某个函数运行时的上下文,

也就是改变函数体内的this指向。

在一个函数里,存在“定义时上下文”、“运行时上下文”,而且上下文是可以改变的。

apply方法

apply方法接收两个参数,第一个参数是:“上下文对象” ,第二个参数是:“传入当前执行函数的参数”(第二个参数是数组)。

 

function test(){            console.log(this.name);        }                let one = {            name:'测试1'        }        let two = {            name:'测试2'        }        test.apply(one);//将one对象传入函数 这时test函数的上下文是one ,one的name等于'测试1' 所以输出 '测试1'        test.apply(two);//将two对象传入函数 这时test函数的上下文是two ,two的name等于'测试2' 所以输出 '测试2'

 

我们自己封装一个log函数,将传入的参数打印在控制台。

function log(){            var arr = Array.prototype.slice.apply(arguments);            console.log.apply(console,arr);        }        log(1,2,4);

 

call方法

call和apply作用都是一样的,唯一的不同点是第二个参数,apply的第二个参数是数组,而call的第二个参数的话,看下面例子:

var arr = [1,2,3];        Array.prototype.push.call(arr,6,7,8); //参数是一个一个传的        console.log(arr);//[1, 2, 3, 6, 7, 8]

 

bind方法

 bind方法和apply、call的作用也是差不多的,不同的是 apply、call 这两个方法是立即执行函数,而bind不是,来看下面例子:

let one = {            name:'测试1'        }        let two = {            name:'测试2'        }        function sayName(){            console.log(this.name);        }        let play = sayName.bind(one); //这里并不会立即执行        play(); //所以 可以将这个方法 放到需要的地方 在执行

 

apply、call、bind这三者的区别

相同点:这个三个方法的作用都是改变函数执行上下文。

不同点:bind是返回对应的函数,便于稍后调用,apply、call方法则是立即执行(立即调用)

 

参考教程:https://www.cnblogs.com/moqiutao/p/7371988.html

转载于:https://www.cnblogs.com/Mrrabbit/p/10472312.html

你可能感兴趣的文章
地铁时光机第一阶段冲刺一
查看>>
Code Smell那么多,应该先改哪一个?
查看>>
站立会议02(一期)
查看>>
oracle数据库导入导出问题
查看>>
Android中的动画
查看>>
LeetCode 119 Pascal's Triangle II
查看>>
【Noip2015pj】求和
查看>>
深入理解JavaScript——闭包
查看>>
C#-WebForm-css box-shadow 给边框添加阴影效果
查看>>
objective-c 编程总结(第七篇)运行时操作 - 动态属性
查看>>
C_数据结构_链表
查看>>
kettle-连接控件
查看>>
Coursera--Neural Networks and Deep Learning Week 2
查看>>
C#中的委托和事件(续)【来自张子扬】
查看>>
机器学习部分国内牛人
查看>>
模拟Sping MVC
查看>>
Luogu 3261 [JLOI2015]城池攻占
查看>>
java修饰符
查看>>
C# Using 用法
查看>>
javascript函数的几种写法集合
查看>>