JS:apply、call、bind的区别

首先,它们是什么呢?我们先看call跟apply:

Function.prototype的方法有apply跟call,所以每个函数都包含call、apply属性。

共同点:都可以改变this的指向(this 永远指向最后调用它的那个对象

差异:接收函数参数的方式不同

call: 第一个值是让t函数addEvent的this指向为obj对象,随后都是携带的addEvent函数的实参,需要逐个列出来

apply: 第一个值同上, 但是addEvent的实参通通都放在了一个数组中

那bind呢?它的作用也是改变this的指向,不过bind后还是函数,需要再进行调用;

===============================================

apply的妙用:

应用场景:

1、让 Math.max()方法可以挑出一个数组的最大值

2、合并两个数组(会改变原来的数组哦)

原文地址:https://www.cnblogs.com/hxw1024/p/12077636.html

时间: 2024-10-13 21:13:41

JS:apply、call、bind的区别的相关文章

js中call、apply和bind的区别

前言 关于js中call.apply和bind这三者的区别,这应该是一个老生常谈的问题,也是前端面试时经常会遇到的一道题目,因此也抽空把它理一遍. 作用 call.apply和bind都是一个javascript中的方法,他们的共同作用就是改变函数执行时的上下文,即改变函数执行时this的指向.我们来看下面的例子: 1 function Animal(name) { 2 this.name = name; 3 } 4 Animal.prototype.getName = function() {

js apply 和call的区别

function Person(name, profession) { this.name = name; this.profession = profession; this.speak = function () { document.writeln("我叫"+name+",我是一位"+profession); } } function Student(name,profession) { Person.call(this,name,profession); }

apply,call,bind的区别

apply和call 在js中,apply,call,bind都是为了改变函数的执行上下文的而存在的,即改变函数内部this的指向. 下面的例子可以说明我们为什么要用apply和call,以及apply和call的区别. function Person(){}; Person.prototype = { name:'John', sayName:function(type){ console.log(this.name + " "+ type); } } var testPerson

call和apply和bind的区别

在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」. apply(): 将函数作为指定对象的方法来调用,传递给它的是指定的参数数组function.apply(thisobj, args) 或者 function.apply(thisobj, args) 1.thisobj

改变this指针的apply,call,bind的区别

apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念. 先来一个栗子: 1 2 3 4 5 6 7 8 9 10 11 function fruits() {}   fruits.prototype = {     color: "red&qu

超容易理解的call()、apply()、bind()的区别

call().apply().bind()是用来改变this的指向的. 一 举个例子 一个叫喵喵的猫喜欢吃鱼,一个叫汪汪的小狗喜欢啃骨头,用代码实现如下: var cat = { name:"喵喵", eatFish:function(param1,param2){ console.log("吃鱼"); console.log("this的指向=>"); console.log(this); console.log(param1,param

js学习总结----call和apply和bind的区别

apply和call的方法是一模一样的,都是用来改变方法的this关键字,并且把方法执行:而且在严格模式和非严格模式下对于第一个参数是null/undefined这种情况的规律是一样的: bind:这个方法在IE6-8下不兼容 ->和call和apply类似都是用来改变this关键字的 'use strict' //告诉当前浏览器接下来的js代码将按照严格模式进行编写 var obj = {name:'张三'} function fn(num1,num2){ console.log(num1+n

js中call、apply、bind的区别

var Person = { name : 'alice', say : function(txt1,txt2) { console.info(txt1+txt2); console.info(this.name); }} var Dog = { name : 'tom', say : function(txt1,txt2) { console.info(txt1+txt2); console.info(this.name); }}var arr = ['hello','hi'];Person.

转 - JS 中 call 和 apply 以及 bind 的区别

转自 https://blog.csdn.net/wyyandyou_6/article/details/81488103 原文地址:https://www.cnblogs.com/dmc-nero/p/12039009.html

call 和 apply 和 bind的区别

有些东西说忘就往,每天记录自己忘记的东西重新学习一遍,挺好 作用:call()和apply()用法都是一样的,改变this的指向问题 区别:接收参数的方式不同, (bind 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向), (bind和 call / apply 有一些不一样,就是不会立即执行函数,而是返回一个已经改变了 this 指向的函数) 1.call call 方法是附加在函数调用后面使用,可以忽略函数本身的 this 指向 语法: 函数名.call(要改变的 thi