首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

callapply

首先个人感觉callapply还是挺神奇,简简单单就改变了this作用域,下面我们来共同学习一下 1.callapply语法(改变this作用域,有点像冒充感觉,例子如下) function.apply...(person ,["孙悟空","七十二变"]);// 这步改变了this作用域,通俗理解就是person对象冒充了People对象, 然后使用了People对象中属性方法 people1...); 了解: 调用call对象必须是个函数function call第一个参数将会是function改变上下文后指向对象, 第二个参数开始可以接收任意个参数...(person ,"啄木鸟","捉虫子"); people1.paly(); person.paly() 代码基本没变,就是把apply替换成了call作用相同,两者最大区别就是传递参数方式不同..., 通俗说 call传递参数是直接用双引号,然后一个接着一个传递 apply传递参数是通过一个数组形式传递

77330
您找到你想要的搜索结果了吗?
是的
没有找到

js call apply

前言   call apply 都是为了改变某个函数运行时 context 即上下文而存在,换句话说,就是为了改变函数体内部 this 指向。   ...call apply二者作用完全一样,只是接受参数方式不太一样。...方法定义   apply   Function.apply(obj,args)方法能接收两个参数:     obj:这个对象将代替Function类里this对象   args:这个是数组或类数组,apply...call   call方法与apply方法第一个参数是一样,只不过第二个参数是一个参数列表   在非严格模式下当我们第一个参数传递为null或undefined时,函数体内this会指向默认宿主对象...,在浏览器中则是window var test = function(){ console.log(this===window); } test.apply(null);//true test.call

1.3K20

javascript函数callapplybind原理及作用详解

javascript函数 callapplybind 本质是用来实现继承,专业点说法就是改变函数体内部 this 指向,当一个对象没有某个功能时,就可以用这3个来从有相关功能对象里借用过来。...call call 方法使用一个指定 this 值单独给出一个或多个参数来调用一个函数: function.call(thisArg, arg1, arg2,...)...apply apply 方法调用一个具有给定 this 值函数,以及以一个数组(或一个类数组对象)形式提供参数: function.apply(thisArg,[arg1, arg2]) call... apply 其实是同一个东西,区别只有参数不同,callapply 语法糖,call 方法接受是一个参数列表,而 apply 方法接受是一个包含多个参数数组 bind bind 方法创建一个新函数...应用场景二:伪数组转化成真数组 一般用于dom节点列表、具有 length 序号属性伪数组对象、函数参数 arguments Array.prototype.slice.apply(fakeArray

16820

JavaScript中 Call Apply

1. call apply区别 Function.prototype.call Function.prototype.apply都是非常常用方法,它们作用一模一样,区别仅在于传入参数形式不同...call传入参数数量不固定,跟apply相同是,第一个参数也是代表函数体内this指向,从第二个参数开始往后,每个参数被依次传入函数: ?...当调用一个函数时,JavaScript解释器并不会计较形参实参在数量、类型以及顺序上区别,JavaScript参数在内部就是用一个数组来表示,从这个意义上来说,applycall使用率更高...call是包装在apply上面的一颗语法糖,如果我们明确地知道函数接受多少个参数,而且想一目了然表达形参实参对应关系,那么也可以用call来传递参数。...有时候我们使用call或者apply目的不在于指定this指向,而是另有有途,比如借用其也对象方法,那么我们可以传入null来代替某个具体对象: ? 2. callapply用途 (1).

56610

js中callapply

一、callapply简介 call() apply() 是预定义函数方法。 两个方法可用于调用函数,两个方法第一个参数必须是对象本身。 两个方法都使用了对象本身作为第一个参数。...两者区别在于第二个参数: apply传入是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call参数传入(从第二个参数开始)。...二、callapply相同点不同点 1. 区别 call传递参数是序列1,2,3,4 apply传递参数是集合型[1,2,3,4] 2....相同点 callapply是替换前面函数内部this指针以及传递参数。 功能:可以自动执行前面的函数 都有两个参数:a. 替换对象 b....console.log(this,a,b,c);//{name: "张三", age: 20} 1 2 3 } method.call(obj,1,2,3); 方法2:使用apply

1.5K30

模拟实现 call apply

模拟实现 call apply 本文参考:深度解析 call apply 原理、使用场景及实现 基础 首先来认识一下 call apply,它们都是 Function.prototype...作用都是用来显示绑定函数内部上下文 this 指向,区别仅在于两者对参数处理不同,一个接收参数列表,一个接收参数数组。...} 1 2 所以 call apply 执行效果其实是一样,区别就在于接收参数形式,是参数列表,还是参数数组。...要想模拟实现 call,必须得先掌握几个关键点: call 接收参数形式含义,及 thisArg 对 null,undefined,基本类型特殊处理 call 本质上是函数另一种调用,只是修改了函数内...,this 会绑定到该对象上) 显示绑定(call, apply, bind, Reflect.apply) new 绑定(当函数 new 使用时会被当做构造函数,构造函数内部 this 会绑定到内部新创对象上

39020

callapply、bind应用区别

1. call( ) 面试中常问Js中关于callapply、bind问题,比如: 怎么利用callapply来求一个数组中最大或者最小值 如何利用callapply来做继承 applycall...fnthis改变为我们要想要结果,并且把对应参数值准备好,以后要用到了,直接执行即可,也就是说bind同样可以改变this指向,但applycall不同就是不会马上执行(如上一个例子)...区别 上面看起来三个函数作用差不多,干的事几乎是一样,那为什么要存在3个家伙呢,留一个不就可以。...所以其实他们干的事从本质上讲都是一样动态改变this上下文,但是多少还是有一些差别的.. ① callapply与bind差别 callapply改变了函数this上下文后便执行该函数,而bind...② callapply区别 他们俩之间差别在于参数区别,callapply第一个参数都是要改变上下文对象,而call从第二个参数开始以参数列表形式展现,apply则是把除了改变上下文对象参数放在一个数组里面作为它第二个参数

34750

JavaScript之apply()call()区别

我 在一开始看到javascript函数applycall时,非常模糊,看也看不懂,最近在网上看到一些文章对apply方法call一些示 例,总算是看有点眉目了,在这里我做如下笔记,希望大家分享...如有什么不对或者说法不明确地方希望读者多多提一些意见,以便共同提高.. 主要我是要解决一下几个问题: 1.        applycall区别在哪里 2.        ...apply其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于applycall定义,然后用示例来解释这两个方法意思如何去用.         ...)          call:apply意思一样,只不过是参数列表不一样.  ...什么情况下用apply,什么情况下用call 在给对象参数情况下,如果参数形式是数组时候,比如apply示例里面传递了参数arguments,这个参数是数组类型,并且在调用 Person时候参数列表是对应一致

62170

JS中call()apply()方法

JS中call()apply()方法 1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象一个方法,...apply方法: 语法:apply([thisObj[,argArray]]) 定义:应用某一对象一个方法,用另一个对象替换当前对象。...或apply方法,将原本属于Animal对象showName()方法交给对象cat来使用了。...(this) 意思就是使用 Animal对象代替this对象,那么 Cat中不就有Animal所有属性方法了吗,Cat对象就能够直接调用Animal方法以及属性了....说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 第二个参数可以是任意类型,而apply第二个参数必须是数组,也可以是arguments 还有 callee,caller

2.1K30

apply()、call()、bind()

apply()、call()、bind() 每个Function对象都存在apply()、call()、bind()方法,其作用都是可以在特定作用域中调用函数,等于设置函数体内this对象值,以扩充函数赖以运行作用域...使用 apply()、call()、bind()都能改变函数对象this指向 window.name = "A"; //挂载到window对象name document.name = "B"; //...); //B //绑定document对象 rollCall.sayName.apply(s); //C //绑定自定义对象 // call rollCall.sayName.call(); //A...()、call()、bind()都能够达到改变this指针目的,但是其使用还是有区别的 // applycall传参方式不同 window.name = "Teacher"; var rollCall...将参数作为一个数组传递 rollCall.sayAllName.apply(window,["A","B","C"]); // Teacher A B C // call 将参数直接传递,使用逗号分隔

67720

call apply区别是什么

2015-07-12 15:02:21 一、方法定义 call方法: 语法:call(thisObj,Object) 定义:调用一个对象一个方法,以另一个对象替换当前对象。...说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数对象上下文从初始上下文改变为由 thisObj 指定新对象。...apply方法: 语法:apply(thisObj,[argArray]) 定义:应用某一对象一个方法,用另一个对象替换当前对象。...相同点:两个方法产生作用是完全一样 不同点:方法传递参数不同 其实说明白一点,其实就是更改对象内部指针,即改变对象this指向内容。这在面向对象js编程过程中有时是很有用。...window对象,其实myFun函数定义var money = 100;都作为window对象子对象(即全局对象) myFun.apply(window,[]); //save to window.myFun.apply

48220
领券