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

jscallapply用法

前天去面试,有个gg问了一些js知识,其中有一道callapply用法的题目,尽管在365天前用过call方法,但当时还是没能答上来,今天深入总结一下 callapply,它们的作用都是将函数绑定到另外一个对象上去运行...两者的格式和参数定义: call( thisArg [,arg1,arg2,… ] );       // 参数列表,arg1,arg2,... apply(thisArg [,argArray]...doctype html> call-apply <input type="text" id...调用call方法,第二个参数属于函数对象func2的参数,因此alert(x)为第二个参数func2 二、call 继承用法与改进 js使用call模拟继承 测试代码: <!...因为每次在函数(类)定义了成员方法,都会导致实例有副本,因此可以借助prototype原型,进行改进 改进举例如下: <!

2.8K10

jscallapply

一、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.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JScall apply bind的用法

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

    2.9K30

    划重点:js的this、callapply

    jsthis有4种指向,分别为: 作为对象的方法调用 作为普通函数调用 构造器调用 Function.prototype.call或Function.prototype.apply调用 1、当作为对象的方法调用时...this 先要理解js的构造器。...(obj2)) //sxm 对于callapply的理解 要想理解上文第4点call调用改变this的具体实现原理,需要先了解callapply的作用。...; 当在Function.prototype.call或Function.prototype.apply情况下,前面调用applycall的函数体内的this原有指向被更改为指向applycall方法的第一个参数...延伸应用: 理解了this、callapply后,在实际js开发,可以很方便的实现对象的继承 继承demo1: 1var Parent = function(){ 2 this.name

    97820

    jscallapply、bind那些事

    前言 回想起之前的一些面试,几乎每次都会问到一个js关于callapply、bind的问题,比如… 怎么利用callapply来求一个数组中最大或者最小值 如何利用callapply来做继承 apply...callapply的区别 他们俩之间的差别在于参数的区别,call和aplly的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,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…下标来访问其中的元素...length属性 ) 数组追加 在js要往数组添加元素,可以直接用push方法, 1234567 var arr1 = [1,2,3];var arr2 = [4,5,6];[].push.apply

    1.7K50

    JScall()和apply()方法

    JScall()和apply()方法 1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,...(sub,3,1); 这个例子的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 的函数其实是对象...16 //输入结果为"Cat" 17 animal.showName.call(cat,","); 18 //animal.showName.apply(cat,[]); call...(this); 20 Class11.call(this); 21 } 很简单,使用两个 call 就实现多重继承了 当然,js的继承还有其他方法,例如使用原型链,这个不属于本文的范畴...说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments 还有 callee,caller

    2.2K30

    JS 手写: callapply、bind

    该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。...可以使用 call 来实现继承:写一个方法,然后让另外一个新的对象来继承它(而不是在新对象再写一次这个方法)。...# 示例 # 使用 call 方法调用父构造函数 在一个子构造函数,可以通过调用父构造函数的 call 方法来实现继承,类似于 Java 的写法。...call() 方法的作用和 apply() 方法类似,区别就是 call() 方法接受的是参数列表,而 apply() 方法接受的是一个参数数组。...使用 apply, 可以只写一次这个方法然后在另一个对象中继承它,而不用在新对象重复写该方法。 applycall() 非常相似,不同之处在于提供参数的方式。

    1.5K30

    Js apply() call()使用详解

    Js apply方法详解 我在一开始看到javascript的函数applycall时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记...主要我是要解决一下几个问题: applycall的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply...) call:和apply的意思一样,只不过是参数列表不一样....示例 在Studen函数里面可以将apply修改成如下: Person.call(this,name,age); 这样就ok了 3.什么情况下用apply,什么情况下用call 在给对象参数的情况下,...(Person.call(this,age,name,grade)); 4.apply的一些其他巧妙用法 细心的人可能已经察觉到,在我调用apply方法的时候,第一个参数是对象(this), 第二个参数是一个数组集合

    1.4K60

    JS的bind、applycall的理解

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

    96210

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

    1、关于call()和apply()的疑点: applycall的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2、语法和参数分析...: applycall都能继承另外一个对象的方法和属性; Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组...,什么情况下用call 使用apply的情况:在给对象参数的情况下,如果参数的形式是数组的时候,比如apply示例里面传递了参数arguments,这个参数是数组类型。...(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

    68820

    jsthis指向问题及callapply,bind的区别

    jsthis指向问题及callapply,bind的区别# 1 this指向# 1.1 what is 'this'?...1.2 标准函数与箭头函数的this指向# this在标准函数与箭头函数的时会有两种不同类型的指向行为。...,apply,bind的区别# 相同点: 都可以改变函数的this指向 第一个参数为this将要指向的对象,后续的传参都是作为函数形参的值 不同点: call的后续传参是一个一个传,然后顺序对应;apply...的后续传参是以数组的形式,解析的时候也是跟call一样顺序对应; callapply没有返回值,而bind改变完this指向后会返回一个改变完this指向之后的原函数的拷贝 可以再次进行调用。...例如: a.say.bind(b)('男', 'UNO') 运行的结果如下: 3 小结# 关于this指向、callapply、bind的记录本篇就总结到这里,在日常使用脚手架、组件开发时可能会用的地方比较少

    1.2K20
    领券