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

jscall和apply

一、call和apply简介 call() 和 apply() 是预定义函数方法。 两个方法可用于调用函数,两个方法第一个参数必须是对象本身。 两个方法都使用了对象本身作为第一个参数。...两者区别在于第二个参数: apply传入是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call参数传入(从第二个参数开始)。...二、call和apply相同点和不同点 1. 区别 call传递参数是序列1,2,3,4 apply传递参数是集合型[1,2,3,4] 2....相同点 call和apply是替换前面函数内部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
您找到你想要的搜索结果了吗?
是的
没有找到

划重点:jsthis、call、apply

jsthis有4种指向,分别为: 作为对象方法调用 作为普通函数调用 构造器调用 Function.prototype.call或Function.prototype.apply调用 1、当作为对象方法调用时...*/ 3、在构造器调用this 先要理解js构造器。...(obj2)) //sxm 对于call和apply理解 要想理解上文第4点call调用改变this具体实现原理,需要先了解call和apply作用。...) //[1, 2, 3] call方法传入参数,第一个参数也是指定调用call函数体内this对象指向,从第二个参数开始往后,每个参数被依次传入函数。...延伸应用: 理解了this、call、apply后,在实际js开发,可以很方便实现对象继承 继承demo1: 1var Parent = function(){ 2 this.name

95920

jscall和apply区别

call和apply实现相同折叠Demo ?...身为VRMMORPG(虚拟大规模线上角色扮演游戏)《刀剑神域〈SAO〉》其中一名玩家:桐人和其他一万个玩家才刚登入享受此游戏之时,游戏中管理员对大家宣布了一个令人惊恐消息── 那就是,现在唯一要登出此游戏方法只有将这个游戏破关...,并且在这个游戏中GAME OVER的话,也就代表了现实世界“死亡”。.../image/jinshu.jpg"> 故事讲述是从东京都西部被分割出来这座都市,“超能力开发”被列为学校课程一部分...某一个暑假日子,在家里阳台上,他遇见了一位修女;这位少女自称自己名字叫“茵蒂克丝”,并是从魔法世界逃了出来,现在正在被魔法师追赶

1.8K30

JScall()和apply()方法

JScall()和apply()方法 1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象一个方法,...说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数对象上下文从初始上下文改变为由 thisObj 指定新对象。...(sub,3,1); 这个例子意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 函数其实是对象...(this) 意思就是使用 Animal对象代替this对象,那么 Cat不就有Animal所有属性和方法了吗,Cat对象就能够直接调用Animal方法以及属性了....(this); 20 Class11.call(this); 21 } 很简单,使用两个 call 就实现多重继承了 当然,js继承还有其他方法,例如使用原型链,这个不属于本文范畴

2.1K30

JScall apply bind用法

谁调用当前属性或者方法,它就是谁 /* 2.1.bind方法作用 修改函数或者方法this为指定对象, 并且会返回一个修改之后新函数给我们 注意点...: bind方法除了可以修改this以外, 还可以传递参数, 只不过参数必须写在this对象后面 */ //call apply bind修改this.../*call:修改函数或者方法this为指定对象, 并且会立即调用修改之后函数 注意点: call方法除了可以修改this以外, 还可以传递参数, */.../*apply:修改函数或者方法this为指定对象, 并且会立即调用修改之后函数 注意点: apply方法除了可以修改this以外, 还可以传递参数, 只不过参数必须通过数组方式传递...test(10,20); window.test(); let fn=test.bind(obj,10,20); fn(); test.call

2.9K30

JSbind、apply、call理解

概要 call、apply、bind 都是用来修改函数this, 传参时,call是一个个传参,apply是数组形式传参,call和apply立即执行并且返回值是你调用方法返回值,若该方法没有返回值...bind是改变this后返回一个新函数,他不会立即执行。 这三个方法不会改变原方法this指向。 Bind 复制原方法传入新this指向后生成新方法,参数可传多个。..."); } }; let b = { name: "小红" }; a.play("小刚"); a.play.bind(b)("小刚"); 显示 小明和小刚一块玩 小红和小刚一块玩 Call...调用原方法传入新this指向,第一个参数为this指向对象,后面可传多个参数。...、apply、bind 是Function.prototype下方法,作用是执行一下目标函数,执行时顺便把目标函数this改一下,然后把结果输出,执行后,不会影响原函数this!

93310

jscall与apply用法

前天去面试,有个gg问了一些js知识,其中有一道call与apply用法题目,尽管在365天前用过call方法,但当时还是没能答上来,今天深入总结一下 call和apply,它们作用都是将函数绑定到另外一个对象上去运行...首先,我们先看个简单例子(call): <!...调用call方法,第二个参数属于函数对象func2参数,因此alert(x)为第二个参数func2 二、call 继承用法与改进 js使用call模拟继承 测试代码: <!...,以区分baseBmember this.showSelfA = function() { window.alert(this.memberA);    // 显示memberA } }...继承改进(prototype) 以上模拟继承方法,仔细分析不是最好。 因为每次在函数(类)定义了成员方法,都会导致实例有副本,因此可以借助prototype原型,进行改进 改进举例如下: <!

2.7K10

jscall方法理解和思考

最近接手前端工作,对当前项目中自制js框架下,js使用产生了非常多困惑.尤其是js类,对象,函数,this等等相互之间关系和转换,以前学过也忘得差不多了,现在基本相当于重新看. js函数有可以有好几种解释...(); console.log(u);//2.这个时候是当做user类 user.toString();//3.这个时候user是作为对象 ?...Function是个函数对象,也可以认为是个类,所有定义函数都是Function类对象,我定义user也是对象,并且可以调用Function里面的方法 user.call(xxx);当我使用user...调用call方法时,他是作为对象来使用,调用是Function类里面的call方法,这个方法作用是调用这个函数并且把传递进去参数覆盖函数里面的this .第一个参数是覆盖函数里面的this , 剩下参数是作为这个函数参数传进去...function user(name){ console.log('我被调用了,this被覆盖了',this,',参数传进来了',name); }; user.call({},'陶士涵');

93130

jscall、apply、bind那些事

前言 回想起之前一些面试,几乎每次都会问到一个js关于call、apply、bind问题,比如… 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply...求数组最大和最小值 1234567 var arr = [34,5,3,6,54,6,-67,5,7,6,-8,687];Math.max.apply(Math, arr);Math.max.call...,-8,687); 将伪数组转化为数组 js伪数组(例如通过document.getElementsByTagName获取元素)具有length属性,并且可以通过0、1、2…下标来访问其中元素...,但是没有Arraypush、pop等方法。...length属性 ) 数组追加 在js要往数组添加元素,可以直接用push方法, 1234567 var arr1 = [1,2,3];var arr2 = [4,5,6];[].push.apply

1.7K50

jsthis指向问题及call,apply,bind区别

jsthis指向问题及call,apply,bind区别# 1 this指向# 1.1 what is 'this'?...# 在 ECMAScript 5 ,函数内部存在两个特殊对象:arguments(一个类数组对象,包含调用函数时传入所有参数) 和 this(本文将要讲)。...1.2 标准函数与箭头函数this指向# this在标准函数与箭头函数时会有两种不同类型指向行为。...1.2.1 标准函数this指向# 在标准函数,this 指向是把函数当成方法调用的上下文对象。也就是说在哪里调用这个函数,那这个this只会指向它外面最靠近它对象。...后续传参是以数组形式,解析时候也是跟call一样顺序对应; call、apply没有返回值,而bind改变完this指向后会返回一个改变完this指向之后原函数拷贝 可以再次进行调用。

1.1K20

区别和详解:jscall()和apply()用法

1、关于call()和apply()疑点: apply和call区别在哪里 什么情况下用apply,什么情况下用call apply其他巧妙用法(一般在什么情况下可以使用apply) 2、语法和参数分析...使用call情况: 如果我Person参数列表是这样(age,name),而Student参数列表是(name,age,grade),这样就可以用call来实现了,也就是直接指定参数列表对应值位置...6、call其他重要用法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]] 说明 : call 方法可以用来代替另一个对象调用一个方法。...(sub,3,1); 分析:这个例子意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 函数其实是对象...这样 Class2 就继承Class1了,Class1.call(this) 意思就是使用 Class1 对象代替this对象,那么 Class2 不就有Class1 所有属性和方法了吗,c2

64520

js call 和 apply

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...(undefined);//true 用法   "劫持"别人方法   此时foologName方法将被bar引用 ,this指向了bar var foo = { name:"mingming"

1.3K20

js call方法_recall

最近又遇到了JacvaScriptcall()方法和apply()方法,而在某些时候这两个方法还确实是十分重要,那么就让我总结这两个方法使用和区别吧。 1....每个函数都包含两个非继承而来方法:call()方法和apply()方法。 2. 相同点: 这两个方法作用是一样。...一般来说,this总是指向调用某个方法对象,但是使用call()和apply()方法时,就会改变this指向。...call()方法 第一个参数和apply()方法一样,但是传递给函数参数必须列举出来。 语法:call([thisObject[,arg1 [,arg2 [,......说明: call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数对象上下文从初始上下文改变为thisObj指定新对象,如果没有提供thisObj参数,那么Global对象被用于thisObj

85520

想起温习一下JSthis apply call arguments

这一课对于所有的计算机专业毕业生来说都可以自学,然而在最近实践(带了两个实习生自学js),我发现他们在学习js时候会被这几个问题困扰:this指向、arguments为什么不是Array、apply...写这篇文章是为了减少js新手被这几个问题困扰时间,希望给js新手一点帮助。 this 指向当前对象,通常在对象构造函数中使用,用来引用对象。...所以在需要范围arguments一部分时候,会联想到数组slice,但是又不能直接用arguments.slice(0, 2),只能用Array.prototype.slice.apply(arguments..., [0, 2]),这里简单说一下Prototype$A,它可以把arguments强制转为一个数组对象,然后可以用很多扩展自定义方法。...apply call (对象冒充) apply 应用某一对象一个方法,用另一个对象替换当前对象。 call    调用一个对象一个方法,以另一个对象替换当前对象。

690100

Jscall vs apply vs bind及记忆方式

前言 jscall(), apply()和bind()是Function.prototype下方法,都是用于改变函数运行时上下文,最终返回值是你调用方法返回值,若该方法没有返回值,则返回undefined...call() call()是apply()一颗语法糖,作用和apply()一样,同样可实现继承,唯一区别就在于call()接收是参数列表,而apply()则接收参数数组。 ?...bind() bind()作用与call()和apply()一样,都是可以改变函数运行时上下文,区别是call()和apply()在调用函数之后会立即执行,而bind()方法调用并改变函数运行时上下文后...、apply()和bind()都是用来改变函数执行时上下文,可借助它们实现继承;call()和apply()唯一区别是参数不一样,call()是apply()语法糖;bind()是返回一个新函数,供以后调用...我是怎么记 apply是a开头跟arraya开头一致,所以apply参数是数组,其余两个call 和 bind参数就不需要记忆了,都是多参数类型。

1.4K40
领券