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

JavaScript的 Call 和 Apply

apply接受两个参数,第一个参数指定了函数体内 this 对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可能为类数组,apply 方法把这个集合的元素作为参数传递给被调用的函数:...在这段代码,参数1、2、3被放在数组中一起传入func函数,它们分别对应func参数列表的x、y、z。...当使用call 或者 apply 的时候,如果我们传入的第一个参数为null,函数体内的this会指向默认的宿主对象,在浏览器为window。 ?...在实际开发,经常会遇到this指向被不经意改变的场景,比如有一个div的节点,div的节点的onclick事件的this本来是指向这个div的。 ?...另外在本博客的"JavaScriptthis的理解"也用apply来修正this,代码如下: ? (2).

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

    js的call和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....function method(a,b,c){ console.log(this,a,b,c);//{name: "张三", age: 20} 1 2 3 } method.apply

    1.6K30

    python apply()函数的用法

    函数格式为:apply(func,*args,**kwargs)用途:当一个函数的参数存在于一个元组或者一个字典时,用来间接的调用这个函数,并肩元组或者字典的参数按照顺序传递给参数解析:args是一个包含按照函数所需参数传递的位置参数的一个元组...的返回值就是函数func函数的返回值def function(a,b): print(a,b) apply(function,('good','better')) apply(function...,(2,3+6)) apply(function,('cai','quan')) apply(function,('cai',),{'b':'caiquan'}) apply(function...,(),{'a':'caiquan','b':'Tom'}) #--使用 apply 函数调用基类的构造函数 class Rectangle: def __init__(self,...(f)df3 # 在DataFrameapply函数默认的是axis=0,取的是列数 A B C0 0.0 0.0 1.01 1.0 1.0

    13.4K30

    jscall和apply的区别

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

    1.8K30

    划重点:js的this、call、apply

    在jsthis有4种指向,分别为: 作为对象的方法调用 作为普通函数调用 构造器调用 Function.prototype.call或Function.prototype.apply调用 1、当作为对象的方法调用时...的理解 要想理解上文第4点的call调用改变this的具体实现原理,需要先了解call和apply的作用。...apply接收两个参数,第一个参数指定了调用apply的函数体内this对象的指向,第二个参数是一个带下标的集合,该集合可以是数组,也可以是类数组,apply方法把这个集合的所有元素作为参数依次传递给调用...; 当在Function.prototype.call或Function.prototype.apply情况下,前面调用apply或call的函数体内的this原有指向被更改为指向apply或call方法的第一个参数...因为在非严格模式下,此时调用apply或call的函数体内的this会指向宿主环境的全局对象;在严格模式下此时调用apply或call的函数体内的this会指向null。

    97820

    JScall apply bind的用法

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

    2.9K30

    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…下标来访问其中的元素...,但是没有Array的push、pop等方法。...Array.prototype.slice.call(arrayLike); 上面arr便是一个包含arrayLike元素的真正的数组啦( 注意数据结构必须是以数字为下标而且一定要有length属性 ) 数组追加 在js要往数组添加元素

    1.7K50

    JavaScript call()、apply()、bind() 的用法

    在JavaScript ,call、apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数调用过程的 this 指向 1 apply Function.apply...(obj,args) apply方法接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组,它将作为参数传给Function(args-->arguments)...this.lastName; } } var person1 = { firstName: "Bill", lastName: "Gates", } person.fullName.apply...city + "," + country; } } var person1 = { firstName:"John", lastName: "Doe" } person.fullName.apply...那为什么要引入bind呢,是因为call和apply会自动执行目标函数,从而无法绑定在事件上,因为事件是我们手动触发的,而bind不会自动执行目标函数。

    7711211

    JS的call()和apply()方法

    JS的call()和apply()方法 1、方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,...apply方法: 语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。...4 } 5 function sub(a,b) 6 { 7 alert(a-b); 8 } 9 10 add.call(sub,3,1); 这个例子的意思就是用...add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4); // 注意:js 的函数其实是对象,函数名是对 Function 对象的引用...说了call ,当然还有 apply,这两个方法基本上是一个意思,区别在于 call 的第二个参数可以是任意类型,而apply的第二个参数必须是数组,也可以是arguments 还有 callee,caller

    2.2K30

    pandasapply与map的异同

    在我们数据处理与分析过程,有时候需要对某一列的每一个值都进行处理,这时候推荐大家使用apply或者map。 但是,二者又有啥区别呢?一起来通过几个小例子学习一下吧。...APPLY 一、直接使用内置函数或者numpy函数 # 数据展示 >>> df Out[1]: 姓名 年龄 0 alan 19 1 black 15 2 cici 23 3...: object 需要注意的是,apply不仅可以用于Series,还可用于DataFrame,具体可以根据自己的业务需要,及数据处理规范来使用即可。...(是否受数据量影响可以自行验证) (2)apply不仅可以用于Series,还可以用于DataFrame;而map只能用于Series。...(3)一般情况下,apply应用更广泛,尤其是自定义函数带多个参数时,建议使用apply

    67330

    理解JavaScript的This,Bind,Call和Apply

    this指向的对象可以是基于全局的,在对象上的,或者在构造函数隐式更改的,当然也可以根据Function原型方法的bind,call和apply使用显示更改的。...在这篇文章,你将学习到基于上下文隐式表示的含义,并将学习如何使用bind,call和apply方法来显示确定this的值。...call和apply的唯一区别就是,call需要一个个的传可选参数,而apply只需要传一个数组的可选参数。...: CreateListFromArrayLike called on non-object at :1:15 针对apply,作为替代,你需要将参数放在一个数组传递。...总结 在这篇文章,你学到了关于JavaScript的this,和基于隐式运行时绑定的可能具有的不同值,以及通过bind,call和apply的显示绑定。

    35140

    聊聊kotlin的run, let, with, apply, also ...

    导语: kotlin 标准库, run, let, with, apply, also 实现解读 在看kotlin代码时, 可能会看到let, run这样的函数调用, 最早接触的时候, 我也弄不清楚其中差异...kotlin, run, let, with, apply, also, 都是标准库的函数, 它的实现可以直接在IDE上跳转看到, 也可以在这里看: Standard.kt 看这些函数的实现, 会发现它们非常短...这个BLOCK和run函数的extension函数版本的block参数, 是等价的. apply函数, also函数 - public inline fun T.apply(block: T.() -..., also的差异完全明了 思考 在上边的实例代码, T.run, T.apply, with(T)对应的block, 怎么拿到TestDemo实例里边的str这个String?...“str(class val)” 为什么T.run对应的block, number++了, 但是println(“this = $this”)输出结果没有增加?

    1.2K70

    Extapply及applyIf方法的应用

    大家好,又见面了,我是你们的朋友全栈君 Extapply及applyIf方法的应用 apply及applyIf方法都是用于实现把一个对象的属性应用于另外一个对象,相当于属性拷贝。...不同的是apply将会覆盖目标对象的属性,而applyIf只拷贝目标对象没有而源对象中有的属性。...(b2,b1); b2.f1(); 在上面的代码,Ext.apply(b2,b1)这一语句把b1的属性拷贝到了b2对象,因此调用b2的f1方法可以弹出”p2 value”的提示信息...可以在调用apply方法时,在第三个参数中指定拷贝属性的默认值,比如下面的代码:Ext.apply(b2,b1,{p3:"p3 value"}); alert(b2.p3);...比如把前面演示apply方法的代码改成applyIf,如下:Ext.applyIf(b2,b1); b2.f1(); 由于b2已经存在了p2属性,因此,b2.f1()方法引用

    33610
    领券