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

js call 和 apply

call 和 apply二者的作用完全一样,只是接受参数的方式不太一样。...方法定义   apply   Function.apply(obj,args)方法能接收两个参数:     obj:这个对象将代替Function类里this对象   args:这个是数组或类数组,apply...call   call方法与apply方法的第一个参数是一样的,只不过第二个参数是一个参数列表   在非严格模式下当我们第一个参数传递为null或undefined时,函数体内的this会指向默认的宿主对象...(this);//test } 当然你也可以这样做,不过在ECMAScript 5的strict模式下,这种情况下的this已经被规定为不会指向全局对象,而是undefined: window.id="...function func(){ "use strict" alert ( this ); // 输出:undefined } func(); 其他用法 类数组   这里把符合以下条件的对象称为类数组

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

js call方法_recall

一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。...语法:apply([thisObj [,argArray] ]);,调用一个对象的一个方法,2另一个对象替换当前对象。...**说明:**如果argArray不是一个有效数组或不是arguments对象,那么将导致一个 TypeError,如果没有提供argArray和thisObj任何一个参数,那么Global对象将用作...,argn]]]]);,应用某一对象的一个方法,用另一个对象替换当前对象。...说明: call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始的上下文改变为thisObj指定的新对象,如果没有提供thisObj参数,那么Global对象被用于thisObj

84720

Js apply() call()使用详解

Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记...apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性....Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组,它将作为参数传给Function(args-->arguments...Function.call(obj,[param1[,param2[,…[,paramN]]]]) obj:这个对象将代替Function类里this对象 params:这个是一个参数列表 1.apply...call示例 在Studen函数里面可以将apply中修改成如下: Person.call(this,name,age); 这样就ok了 3.什么情况下用apply,什么情况下用call 在给对象参数的情况下

1.4K60

JS 手写: call、apply、bind

# 描述 call() 允许为不同的对象分配和调用属于一个对象的函数/方法。 call() 提供新的 this 值给当前调用的函数/方法。...可以使用 call 来实现继承:写一个方法,然后让另外一个新的对象来继承它(而不是在新对象中再写一次这个方法)。...this 指当前对象,也就是正在调用这个函数的对象。 使用 apply, 可以只写一次这个方法然后在另一个对象中继承它,而不用在新对象中重复写该方法。...这样,在使用 apply 函数的时候就不需要知道被调用对象的所有参数。可以使用 arguments 来把所有的参数传递给被调用对象。 被调用对象接下来就负责处理这些参数。...[[Call]] - 执行与此对象关联的代码。通过函数调用表达式调用。内部方法的参数是一个this值和一个包含通过调用表达式传递给函数的参数的列表。

1.5K30

Python - 面向对象编程 - __call__()

__call()__ 的作用 使得类实例对象可以像普通函数那样被调用 实际栗子 from typing import Callable class PoloBlog: def __init_..._(self, name): self.name = name def __call__(self, *args, **kwargs): print(self.name...什么是可调用对象 Python 中,可以通过 执行成功的对象,都称为可调用对象 对象() 可调用对象包括自定义的函数、Python 内置函数、上面说的实现了 __call__ 的类实例对象 可以通过...__call__() # 输出结果 小菠萝测试笔记 小菠萝测试笔记 类实例方法的栗子 class A: def say(self): print("小菠萝测试笔记") a...__call__() # 输出结果 小菠萝测试笔记 小菠萝测试笔记 总结 还是常用的可调用对象的执行方式 对象() 作为了解补充即可 对象.__call__()

17320

js学习之call和apply

贪玩蓝月真好玩,但学习还是要继续的 我们平时调用一个js函数是这样的 var ruben = { say: function (word) { if (this.name ==...} } var whatRubenSaid = ruben.say("做猪呢,最重要的是开心"); console.log(whatRubenSaid); 输出结果 那么我们现在新创建一个对象...var Achao = { name: "Achao" } 如果我们想在Achao里调用ruben里的say函数 我们就可以这样 var whatAchaoSaid = ruben.say.call...(Achao, "村头恶霸华农、刑部尚书手工耿、木瓜大盗莫叔、非洲人犯朱一旦") console.log(whatAchaoSaid); 输出结果 这就是call函数的使用方式和场景了 那么还有一个apply...和call不同,它调用方法给的参数需要是一个数组 var Hegel = { name: "黑格尔" } var whatHegelSaid = ruben.say.apply(Hegel, [

88620

js中的call和apply

一、call和apply简介 call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。 两个方法都使用了对象本身作为第一个参数。...两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。...在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。...二、call和apply的相同点和不同点 1. 区别 call传递的参数是序列1,2,3,4 apply传递的参数是集合型[1,2,3,4] 2....相同点 call和apply是替换前面函数内部的this指针以及传递参数。 功能:可以自动执行前面的函数 都有两个参数:a. 替换的对象 b.

1.5K30

jscall与apply用法

前天去面试,有个gg问了一些js知识,其中有一道call与apply用法的题目,尽管在365天前用过call方法,但当时还是没能答上来,今天深入总结一下 call和apply,它们的作用都是将函数绑定到另外一个对象上去运行...window调用函数gFunc,this指向window对象,因此this.value为global var 2、函数gFunc调用call方法,this默认指向第一个参数window对象,因此this.value...调用call方法,this默认指向第一个参数func函数对象,因此this.value为this.a,即func 6、函数func2调用call方法,第二个参数属于函数对象func2的参数,因此alert...(x)为第二个参数func2 二、call 继承用法与改进 js使用call模拟继承 测试代码: <!...当调用extend.showSelfA();时,此时的this指向extendAB(并不是我们推测的两次都指向baseB对象) 真实原因是extendAB对象的成员变量member在被baseB.call

2.7K10

jscall、apply、bind那些事

前言 回想起之前的一些面试,几乎每次都会问到一个js中关于call、apply、bind的问题,比如… 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply...call、apply的区别 他们俩之间的差别在于参数的区别,call和aplly的第一个参数都是要改变上下文的对象,而call从第二个参数开始以参数列表的形式展现,apply则是把除了改变上下文对象的参数放在一个数组里面作为它的第二个参数...,-67,5,7,6,-8,687); 将伪数组转化为数组 js中的伪数组(例如通过document.getElementsByTagName获取的元素)具有length属性,并且可以通过0、1、2…下标来访问其中的元素...length属性 ) 数组追加 在js中要往数组中添加元素,可以直接用push方法, var arr1 = [1,2,3]; var arr2 = [4,5,6]; [].push.apply...(arr1, arr2); // arr1 [1, 2, 3, 4, 5, 6] // arr2 [4,5,6] 判断变量类型 对于对象型的数据类型,我们可以借助call来得知他的具体类型,例如数组

1.6K60

jscall、apply、bind那些事

前言 回想起之前的一些面试,几乎每次都会问到一个js中关于call、apply、bind的问题,比如… 怎么利用call、apply来求一个数组中最大或者最小值 如何利用call、apply来做继承 apply...call、apply的区别 他们俩之间的差别在于参数的区别,call和aplly的第一个参数都是要改变上下文的对象,而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...(arr1, arr2);// arr1 [1, 2, 3, 4, 5, 6]// arr2 [4,5,6] 判断变量类型 对于对象型的数据类型,我们可以借助call来得知他的具体类型,例如数组 123456

1.7K50
领券