函数对象的call()、apply() 方法区别

函数对象的call()、apply() 方法

函数作为对象提供了call(),apply() 方法,他们也可以用来调用函数,这两个方法都接受一个对象作为参数,用来指定本次调用时函数中this的指向;

call()方法

call方法使用的语法规则

函数名称.call(obj,arg1,arg2...argN);

参数说明:

obj:函数内this要指向的对象,

arg1,arg2...argN :参数列表,参数与参数之间使用一个逗号隔开

var lisi = {names:‘lisi‘};
var zs = {names:‘zhangsan‘};
function f(age){
    console.log(this.names);
    console.log(age);

}
f(23);//undefined
//将f函数中的this指向固定到对象zs上;
f.call(zs,32);//zhangsan

apply()方法

函数名称.apply(obj,[arg1,arg2...,argN])

参数说明:

obj :this要指向的对象

[arg1,arg2...argN] : 参数列表,要求格式为数组

var lisi = {name:‘lisi‘};
var zs = {name:‘zhangsan‘};
function f(age,sex){
    console.log(this.name+age+sex);
}
//将f函数中的this指向固定到对象zs上;
f.apply(zs,[23,‘nan‘]);
注意:call和apply的作用一致,区别仅仅在函数实参参数传递的方式上;

这个两个方法的最大作用基本就是用来强制指定函数调用时this的指向; 

原文地址:https://www.cnblogs.com/wangzhaobo/p/9713728.html

时间: 2024-10-01 11:54:40

函数对象的call()、apply() 方法区别的相关文章

JS中的call()和apply()方法区别

如 果没接触过动态语言,以编译型语言的思维方式去理解javaScript将会有种神奇而怪异的感觉,因为意识上往往不可能的事偏偏就发生了,甚至觉得不可 理喻.如果在学JavaScript这自由而变幻无穷的语言过程中遇到这种感觉,那么就从现在形始,请放下的您的”偏见”,因为这对您来说绝对是一片新大 陆,让JavaScrip 好,言归正传,先理解JavaScrtipt动态变换运行时上下文特性,这种特性主要就体现在apply, call两个方法的运用上. 区分apply,call就一句话, foo.ca

javascript——对象的概念——函数 1 (函数对象的属性和方法)

一.函数相关的属性: 1.arguments:访问函数的输入参数,由脚本解释器自动创建,具有length属性,可以用序号访问每个参数. 2.callee:arguments的属性,表正在执行的函数对象. 3.calleer:函数对象的属性,表函数对象的父函数对象.

call 和 apply 方法区别

在js中call和apply它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别,下面我来给大家介绍一下call和apply用法. 在web前端开发过程中,我们经常需要改变this指向,通常我们想到的就是用call方法,但是对于call的理解很多人不是很清晰,那么下面小编就给大家详细说一说call和apply的详细知识 一.call方法的定义 大家在百度里面可以搜索call,关于call的定义都很拗口.在我的理解,a.call(b,arg1,arg2..)就是a对象的方法

函数的call()方法和apply()方法

阅读各种框架的源码apply和call方法肯定经常看到,好好理解一下概念至关重要. JavaScript中的函数也是对象,和其他JavaScript对象没什么两样,函数对象也可以包含方法.其中的call()方法和apply()方法可以间接调用函数.两个方法都允许显式指定调用所需的this值,也就是说,任何函数都可以作为任何对象的方法来调用,哪怕这个函数不是那个对象的方法. 两个方法都可以指定调用的实参.call()方法使用它自有的实参列表作为函数的实参,apply()方法则要求以数组的形式传入参

伴生类和伴生对象(apply方法的实践)

具有相同名字的object和class,分别为伴生对象和伴生类 1 class ApplyTest { //伴生类 2 3 } 4 5 object ApplyTest { //伴生对象 6 7 } 补充代码: object ApplyApp { def main(args: Array[String]): Unit = { var c = ApplyTest() // ==>object.apply() c() //==>class.apply() } } /** * 伴生类和伴生对象:具有

对call() apply() 方法的简单理解

真的是非常简单的理解,我知道的并不多,在网上查找了很多的资料,还是只能了解一点皮毛,下面来整理出来,方便以后深入的去学习,也是对目前知道的知识点的巩固. 整理一些网上的经典解答: 1.一句话区分call 和apply obj1.call(obj2,arg1,arg2,arg3) == obj1.apply(obj2,arguments) == obj2.foo(arg1,arg2,arg3) thisA.functionA.apply(thisB,[arg1,arg2,...]) == this

夺命雷公狗---javascript NO:32 Call/Apply方法

行内绑定中this指向:全局window对象 动态绑定中this指向:当前要操作的dom对象 构造器中的this指向:谁实例化构造器那么其内部的this就指向谁 1.为什么需要Call与Apply方法 问题:我们可以不可以手工改变函数内部的this指向?答:可以,使用Call或Apply方法 2.如何定义Call与Apply方法 call([thisObj[,arg1[,arg2[,argN]]]]) 参数说明: 函数.call(thisObj,arg1,arg2,arg3…) thisObj 

认识js函数对象(Function Object)

认识函数对象(Function Object) 可以用function关键字定义一个函数,对于每个函数可以为其指定一个函数名,通过函 数名来进行调用.这些都是代码给用户的印象,而在JavaScript解释执行的时候,实际上每 个函数都是被维护为一个对象,这就是本小节将要介绍的函数对象(Function Object). 函数对象与其它用户所定义的对象有着本质的区别,这一类对象被称之为内部对象,例 如日期对象(Date).数组对象(Array).字符串对象(String)都是属于内部对象.换句话

Js语言中Call方法和Apply方法

1 <script type="text/javascript"> 2 // Call方法: 3 // 语法:call(thisObj[,arg1,arg2,...,argN]) 4 // 定义:调用对象的一个方法,用另一个对象替换当前对象 5 6 // Apply方法: 7 // 语法:apply([thisObj,argArray]) 8 // 定义:应用某一个对象的一个方法,用另一个对象替换当前对象 9 10 //a, 11 function add (a,b) {