jquery call and apply

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

apply方法: 
语法:apply([thisObj[,argArray]]) 
定义:应用某一对象的一个方法,用另一个对象替换当前对象。 
说明: 
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

    <script language="javascript"><!--

    /**定义一个animal类*/
    function Animal(){
        this.name = "Animal";
        this.showName = function(){
            alert(this.name);
        }
    }
    /**定义一个Cat类*/
    function Cat(){
        this.name = "Cat";
    }   

    /**创建两个类对象*/
    var animal = new Animal();
    var cat = new Cat();   

    //通过call或apply方法,将原本属于Animal对象的showName()方法交给当前对象cat来使用了。
    //输入结果为"Cat"
    animal.showName.call(cat,",");
    //animal.showName.apply(cat,[]);   

// --></script> 

以上代码无论是采用animal.showName.call或是animal.showName.apply方法,运行的结果都是输出一个"Cat"的字符串。说明showName方法的调用者被换成了cat对象,而不是最初定义它的animal了。这就是call和apply方法的妙用!

转摘:http://blog.csdn.net/hackerhope/article/details/6174895

时间: 2024-11-05 21:39:59

jquery call and apply的相关文章

jquery 中 fn.apply(this, arguments)是什么函数?有什么作用?能举个例子吗

1 function Person(name){ 2 this.name=name; 3 this.sayname=function (){ 4 alert(this.name); 5 } 6 } 7 function Student(name){ 8 Person.apply(this,arguments); 9 } 10 11 var xiaoming=new Student("小明"); 12 xiaoming.sayname(); 这是javascript里的吧,是将函数的属性

jQuery源码

/*! * jQuery JavaScript Library v1.8.3 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright 2012 jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: Tue Nov 13 20

谈谈Angular关于$watch,$apply 以及 $digest的工作原理

这篇文章主要是面向那些刚开始学AngularJs和想要了解数据绑定(data-binding)是怎么工作的, 如果你已经熟悉如何使用angularjs了,我强烈建议你不用阅读了. angularjs使用者想要知道data-binding是如何工作的,就会遇到很多的关的术语 比如$wacth,$apply,$digest,dirty-checking(脏值检测)...等等,这些又是做什么的呢? 在这篇文章里我会解决所有的疑问,通过结合这些术语在一起来学习. 但是我会尽量用简单的方式来说明. 现在开

javascript事件之:jQuery事件中实例对象和拓展对象之间的通信

我们总结过jQery事件中的实例原型对象对外接口和拓展对象,现在我们看看他们是如何进行通信联系的. 先来看便捷方法: 1 //调用的还是实例对象下的on()和trigger() 2 jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + 3 "mousedown mouseup mousemove mouseover mouseout mouseenter

jquery 2.1.0 源码

/*! * jQuery JavaScript Library v2.1.0 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2

[转]理解$watch ,$apply 和 $digest --- 理解数据绑定过程

原文地址:http://angular-tips.com/blog/2013/08/watch-how-the-apply-runs-a-digest/ 注 这篇博文主要是写给新手的,是给那些刚刚开始接触Angular,并且想了解数据帮定是如何工作的人.如果你已经对Angular比较了解了,那强烈建议你直接去阅读源代码. Angular用户都想知道数据绑定是怎么实现的.你可能会看到各种各样的词汇:$watch,$apply,$digest,dirty-checking... 它们是什么?它们是如

Angular关于$watch,$apply 以及 $digest的工作原理

我们的浏览器会检测等待事件发生,比如用户的一些行为,假如你点击了一个button或者在input写东西, 事件的回调就会在内置的JavaScript跑起来,然后你就能够做一些DOM操作了. 所以当回调发生的时候,浏览器中的DOM会发生一些变化. 而Angularjs扩展了这个事件轮询,创建了一个叫angular content的东西(记住它,非常重要的一个概念), 为了解释这个context是什么以及它是怎么工作的,我们需要先了解一下其他的一些概念. The $watch list 每当你在ui

jQuery源码解读-事件分析

最原始的事件注册 addEventListener方法大家应该都很熟悉,它是Html元素注册事件最原始的方法.先看下addEventListener方法签名: element.addEventListener(event, function, useCapture) event:事件名,例如“click”,这里要提醒的一点是不要加前缀“on”;    function:事件触发时执行的函数;    userCapture:默认为false,表示event事件在冒泡阶段触发.如果设置为true,则

JQuery实现click事件绑定与触发方法分析

原生JS通过什么方法绑定click事件? 原生js有一下三种方法为DOM对象绑定click事件, 第一种,在html中添加 onclick属性,在此属性中添加要绑定的事件函数,如下, 这种方法为html处理事件的原始方法,使得html和js过分耦合, 即表现层代码 和 行为层代码耦合: <html> <head> <script src="./jquery.js"></script> </head> <body>