js中的call与apply

看js权威指南里面关于call与apply方法的说明:我们可以将call()与apply()看作是某个对象的方法,通过调用方法的形式来间接调用函数。这样的解释未免使人糊涂啊。下面说一下自己的见解:其实call与apply根据字面意思就是表示函数的回调,其实用法和AS3中的call与apply相同。其中call()的第一个参数与apply()的第一个参数一样都表示要调用的函数的母对象,他是调用的上下文,在函数体内通过使用this来获得对他的引用。call()剩下的参数就是要传给调用的函数的参数列表。apply()除第一个参数外的另外一个参数就是要传给调用函数的参数了,只不过他是一个数组的形式,和call()的参数列表的形式不同罢了。

要想以对象ob的方法来调用函数fu(),可以这样使用call与apply.

fu.call(ob);
fu.apply(ob);

在严格模式下call与apply的第一个参数都会变为this的值。哪怕传入的实参是原始值或是null,undefined。在非严格模式下传入的null与undefined都会被全局对象代替,而原始值都被相应的包装对象替代。

实例一:

var func=new function(){this.a="func"}
        var myfunc=function(x){
            var a="myfunc";
            var b = "bbbbb";
            alert(this.b);
            alert(this.a);
            alert(x);
        }
        myfunc.call(func,"var");*/
        /*var nu = Math.max.apply(Math,[1,3,4,6,7]);
        alert(nu);

实例二:

var nu = Math.max.apply(Math,[1,3,4,6,7]);
 alert(nu);

实例三:

 function add(a, b)
        {
            alert(a + b);
        }
        function sub(a, b)
        {
            alert(a - b);
        }
        add.call(sub, 3, 1);

运行看看结果是怎样的,你就会理解。

http://www.cnblogs.com/huyong/p/4139875.html

时间: 2024-10-13 20:45:23

js中的call与apply的相关文章

JS中的call、apply、bind方法

JS中的call.apply.bind方法 一.call()和apply()方法 1.方法定义call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj.

理解JS中的call、apply、bind方法

理解JS中的call.apply.bind方法(*****************************************************************) 在JavaScript中,call.apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向. call.apply.bind方法的共同点和区别:apply . call .bind 三者都是用来改变函数的this对象的指向的:apply . call .bind 三者

【js插件进阶】JS中的call()和apply()方法详解

JS中的call()和apply()方法 1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply(

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

转载自:http://uule.iteye.com/blog/1158829 1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj.

js中的call()与apply()

js中的call()函数和apply()函数: 1.主要作用:是用于指定作用域和传参 (1)用于指定作用域 1 window.color = "red"; 2 var o = { color: "blue" }; 3 var sayColor = function () { 4 debugger; 5 alert(this.color); 6 } 7 sayColor(); 8 9 sayColor.apply(this);//undefinded 10 sayCo

【转】JS中的call()和apply()方法

原文:http://uule.iteye.com/blog/1158829 1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. a

JS中的call()和apply()方法理解和使用

1.方法定义call方法: 语法:obj.method.call(thisObj[,arg1[, arg2[, [,.argN]]]]) 定义:调用对象(obj)的一个方法(method),以另一个对象(thisObj)替换当前对象(obj). 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象(方法内的this的指向传入的thisObj) . 如果没有提供 thisObj 参数,那么 Global

JS中的call()和apply()方法(转)

1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,argArray]])

5.JS中的call()和apply()方法

1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,argArray]])