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

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()方法

    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 函数其实是对象...(this) 意思就是使用 Animal对象代替this对象,那么 Cat不就有Animal所有属性方法了吗,Cat对象就能够直接调用Animal方法以及属性了....(this); 20 Class11.call(this); 21 } 很简单,使用两个 call 就实现多重继承了 当然,js继承还有其他方法,例如使用原型链,这个不属于本文范畴...说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 第二个参数可以是任意类型,而apply第二个参数必须是数组,也可以是arguments 还有 callee,caller

    2.2K30

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

    1、关于call()apply()疑点: applycall区别在哪里 什么情况下用apply,什么情况下用call apply其他巧妙用法(一般在什么情况下可以使用apply) 2、语法参数分析...: applycall都能继承另外一个对象方法属性; Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组...,它将作为参数传给Function(args-->arguments) call:apply意思一样,只不过是参数列表不一样....(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

    68720

    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

    划重点:jsthis、callapply

    jsthis有4种指向,分别为: 作为对象方法调用 作为普通函数调用 构造器调用 Function.prototype.call或Function.prototype.apply调用 1、当作为对象方法调用时...*/ 3、在构造器调用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用法

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

    2.8K10

    JavaScript Call Apply

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

    59510

    JSbind、applycall理解

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

    95510

    jscallapply、bind那些事

    前言 回想起之前一些面试,几乎每次都会问到一个js关于callapply、bind问题,比如… 怎么利用callapply来求一个数组中最大或者最小值 如何利用callapply来做继承 apply...所以其实他们干的事从本质上讲都是一样动态改变this上下文,但是多少还是有一些差别的.. callapply与bind差别 callapply改变了函数this上下文后便执行该函数,而bind...callapply区别 他们俩之间差别在于参数区别,callaplly第一个参数都是要改变上下文对象,而call从第二个参数开始以参数列表形式展现,apply则是把除了改变上下文对象参数放在一个数组里面作为它第二个参数...,-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

    jscallapply、bind那些事

    前言 回想起之前一些面试,几乎每次都会问到一个js关于callapply、bind问题,比如… 怎么利用callapply来求一个数组中最大或者最小值 如何利用callapply来做继承 apply...、call、bind区别主要应用场景 虽然网上有很多关于这方面的博客和文章,但还是决定写一篇自己对这方面知识理解。...所以其实他们干的事从本质上讲都是一样动态改变this上下文,但是多少还是有一些差别的.. callapply与bind差别 callapply改变了函数this上下文后便执行该函数,而bind...callapply区别 他们俩之间差别在于参数区别,callaplly第一个参数都是要改变上下文对象,而call从第二个参数开始以参数列表形式展现,apply则是把除了改变上下文对象参数放在一个数组里面作为它第二个参数...length属性 ) 数组追加 在js要往数组添加元素,可以直接用push方法, var arr1 = [1,2,3]; var arr2 = [4,5,6]; [].push.apply

    1.6K60

    JScall()方法apply()方法slice()用法总结

    每个函数都包含两个非继承而来方法:call()方法apply()方法。 2. 相同点:这两个方法作用是一样。...一般来说,this总是指向调用某个方法对象,但是使用call()apply()方法时,就会改变this指向。...call()方法 第一个参数apply()方法一样,但是传递给函数参数必须列举出来。 语法:call([thisObject[,arg1 [,arg2 [,......from:从该索引值开始切片until:切片到该索引值(不包含该索引值) 如果我们想获取包含原数组前三个元素子数组,应该怎么做呢?让我们在Chrome开发者工具实例运行下 ?...)切片不包括“until”索引值元素可以用于数组字符串

    88320

    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传递参数是通过一个数组形式传递

    79630

    JS 手写: callapply、bind

    该方法语法作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受是一个参数列表,而 apply() 方法接受是一个包含多个参数数组。...# 示例 # 使用 call 方法调用父构造函数 在一个子构造函数,可以通过调用父构造函数 call 方法来实现继承,类似于 Java 写法。...call() 方法作用 apply() 方法类似,区别就是 call() 方法接受是参数列表,而 apply() 方法接受是一个参数数组。...使用 apply, 可以只写一次这个方法然后在另一个对象中继承它,而不用在新对象重复写该方法。 applycall() 非常相似,不同之处在于提供参数方式。...当目标函数被调用时,被预置入绑定函数参数列表参数。 返回值 返回一个原函数拷贝,并拥有指定 this 值初始参数。

    1.5K30
    领券