`

call()和apply()

 
阅读更多
     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方法

    JavaScript中call和apply方法的区别实例分析

    本文实例分析了JavaScript中call和apply方法的区别。分享给大家供大家参考,具体如下: 这两个方法不经常用,但是在某些特殊场合中是非常有用的,下面主要说下它们的区别: 1、首先,JavaScript是一门面向对象的语言...

    javascript中call和apply方法浅谈

    我们可以将call和apply看做是某个对象的方法,通过调用方法的形式来间接调用函数

    javascript中apply和call方法的作用及区别说明

    一、call和apply的说明 1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为...

    Javascript中call和apply函数的比较和使用实例

    一些简单的Javascript操作中较少会用到call和apply函数,在另外一些较大型的操作中,如web应用开发,js框架开发中可能会经常遇到这两个函数。关于这两个函数的解释,网上的资料也很多,但是本人认为很多资料要么...

    Javascript 中的 call 和 apply使用介绍

    简单的说就是改变函数执行的上下文,... 这两个方法通常被用来类的继承和回调函数: 作用一、类的继承: 先来看这个例子: 代码如下: function Person(name,age){ this.name = name; this.age=age; this.alertName = f

    JS中call和apply函数用法实例分析

    本文实例讲述了JS中call和apply函数用法。分享给大家供大家参考,具体如下: call 函数 语法 obj.call(thisObj,arg[,arg2[,arg3[,...agr]]]); 简介 thisObj继承obj的属性和方法(obj原型链上的属性和方法不能被继承),...

    关于Javascript中call与apply的进一步探讨

    NULL 博文链接:https://ufoqhmdt.iteye.com/blog/1676748

    JavaScript 学习笔记(九)call和apply方法

    call和apply方法 call方法可改变上下文this指针,类似的方法还有apply,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。 obj1.method1.call(obj2,argument1,...

    javascript基于原型链的继承及call和apply函数用法分析

    本文实例讲述了javascript基于原型链的继承及call和apply函数用法。分享给大家供大家参考,具体如下: 1. 继承是面向对象编程语言的一个重要特性,比如Java中,通过extend可以实现多继承,但是JavaScript中的继承...

    JS中改变this指向的方法(call和apply、bind)

    this是javascript的一个关键字,随着函数使用场合不同,this的值会发生...但是总有一个原则,那就是this指的是调用函数的那个对象,通过本文给大家介绍JS中改变this指向的方法(call和apply、bind),需要的朋友参考下

    玩转方法:call和apply

    在实现继承的时候,用到了两个很特殊的方法,call和apply,下面,我就来说一下这个两个方法

    javascript中call和apply的用法示例分析

    主要介绍了javascript中call和apply的用法示例分析,非常的详细,需要的朋友可以参考下

    Js的call与apply1

    JS 中没有诸如 Java、C#等高级语言中的 extend 关键字,因此 JS 中没有继承的概念,如果一定要继承的话,call 和 apply 可以实现这个功

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

    在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向 语法: apply() 接收两...

Global site tag (gtag.js) - Google Analytics