call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。
用的比较多的情况是在类数组转化数组:
http://wangjingyi.iteye.com/blog/2197626
call方法:
语法:call(thisObj,Object)
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
function sayColor(sPrefix,sSuffix) {
alert(sPrefix + this.color + sSuffix);
};
var obj = new Object();
obj.color = "blue";
//第二个和第三个参数是字符串,最终弹出:The color is blue, a very nice color indeed
sayColor.call(obj, "The color is ", "a very nice color indeed.");
apply方法:
语法:apply(thisObj,[argArray])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明: 如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
function sayColor(sPrefix,sSuffix) {
alert(sPrefix + this.color + sSuffix);
};
var obj = new Object();
obj.color = "blue";
//第二个参数是由两个字符串构成的数组,最终弹出:The color is blue, a very nice color indeed
sayColor.apply(obj, new Array("The color is ", "a very nice color indeed."));
共同点:作用完全一样
不同点:接受参数的方式不太一样,call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。
http://www.zhihu.com/question/20289071
http://www.w3school.com.cn/js/pro_js_inheritance_implementing.asp
分享到:
相关推荐
JavaScript中call与apply方法
本文实例分析了JavaScript中call和apply方法的区别。分享给大家供大家参考,具体如下: 这两个方法不经常用,但是在某些特殊场合中是非常有用的,下面主要说下它们的区别: 1、首先,JavaScript是一门面向对象的语言...
在JavaScript中,`call`和`apply`是两个非常重要的方法,它们都用于改变函数调用时的上下文(即`this`的值),并且可以灵活地传递参数。本篇文章将深入探讨这两个方法的用法、区别以及实际应用场景。 `call`方法...
call和apply是JavaScript中的两个重要方法,它们都是Function.prototype中的方法,这意味着每个函数都可以使用这两个方法。它们的作用是改变函数体内的this对象的值,以扩充函数赖以运行的作用域。 相同点:call和...
### 理解JavaScript中的`caller`...综上所述,理解`caller`、`callee`、`call`、`apply`以及`arguments`对象在JavaScript编程中至关重要,它们不仅增强了函数的灵活性和复用性,还提供了深入分析和调试代码的强大工具。
一、call和apply的说明 1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为...
通过call和apply可以调用某个函数,并且显式地指定该函数内部的this变量的值。 ### call和apply的基本概念 call方法接受一个参数列表,而apply方法接受一个包含多个参数的数组。两者第一个参数都是要设置为函数...
这就需要用到call和apply这两个方法,它们允许我们设定函数内this的值。 首先,需要了解的是,call和apply是Function对象的方法,也就是说,只有函数对象才能调用这两个方法。它们的基本作用是允许在指定的this上下...
在JavaScript中,`call`和`apply`是两种非常重要的函数调用方式,它们都用于改变函数内部`this`的指向,实现函数的动态绑定。这两个方法都是Function对象的原型方法,可以应用到任何函数上。 首先,让我们深入理解`...
为了进一步控制函数执行的上下文,JavaScript提供了特殊的内置方法,即call和apply方法,这两个方法都是Function对象的方法,可以用来在特定的作用域中调用函数,即改变函数体内this的指向。 call和apply方法的主要...
JavaScript中的call和apply函数都是Function对象的方法,它们的作用是改变函数的调用对象,并能够立刻调用该函数。call和apply功能相似,都允许开发者在特定的作用域中调用函数,即显式地设置函数体内this的值。它们...
1. call和apply的区别在于传递参数的方式,call方法需要一个一个传递参数,而apply方法则直接传递一个数组。 2. call和apply方法直接执行函数,而bind方法需要再次调用。 3. bind方法返回一个新的函数,而call和...
本文针对JavaScript中三个重要的函数方法——call、apply和bind,进行详尽的分析,并在文章的结尾部分对这三个方法之间的联系和区别进行了概括,以便于读者更深入地理解它们的用途和应用场景。 首先,我们来探讨...
这篇文章将深入探讨四个关键概念:caller、callee、call和apply,它们都是JavaScript函数操作的核心部分,对于理解和使用高级JavaScript编程至关重要。 首先,我们来了解`caller`和`callee`。在JavaScript的函数...
### Javascript call和apply区别及使用方法 在JavaScript中,`call`和`apply`方法被用于显式地设定函数体内`this`的值,这是所谓的函数借用(method borrowing)或函数上下文改变(context changing)。它们使得一...
在众多控制函数调用的方法中,call和apply是两个非常重要的方法。它们都属于Function.prototype对象的方法,主要用于改变函数的执行上下文,即改变函数内的this指向。尽管这两种方法在很多情况下可以互换使用,但...
2. **Call 和 Apply** 能够在子类的运行环境中执行父类的方法和属性。它们可以实现一个子类继承多个父类,但 `prototype` 只能继承一个父类。 3. 在实际开发中,选择哪种继承方式取决于具体的场景和需求。通常情况下...
本文实例讲述了javascript基于原型链的继承及call和apply函数用法。分享给大家供大家参考,具体如下: 1. 继承是面向对象编程语言的一个重要特性,比如Java中,通过extend可以实现多继承,但是JavaScript中的继承...