`

apply和callback的使用

    博客分类:
  • JS
阅读更多
JS中 没有new 的对象在对象里的this是不存在的

例如:

function a(){

  this.b="hi";

  this.c=function(){alert('hi');}

}

alert(a.b);//out undefined
try{
a.c();
}catch(e){
  alert(e->getmessage());//有输出
}
var a =new a();
alert(a.b);//输出 hi
a.c();//输出 hi




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

举例1:

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

这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4);

举例2:
function Class1()    
{    
this.name = "class1";    
this.showNam = function()    
{    
alert(this.name);    
}    
}    
function Class2()    
{    
this.name = "class2";    
}    
var c1 = new Class1();    
var c2 = new Class2();    
c1.showNam.call(c2);   


call 的意思是把 c1 的方法放到c2上执行,原来c2是没有showNam() 方法,现在是把c1 的showNam()方法放到 c2 上来执行,所以this.name 应该是 class2,执行的结果就是:alert("class2");

分享到:
评论

相关推荐

    javascript中call apply 的应用场景

    callback.call(xxx,xxx) 虽然看到书上有介绍 说call和apply函数可以改变作用域,但还是无法非常透彻的理解改变作用域主要是为了解决什么问题,有没有替代方案,或者 这2个函数主要为了解决什么问题,应用场景,何时...

    python使用multiprocessing模块实现带回调函数的异步调用方法

    本文实例讲述了python使用multiprocessing模块实现带回调函数的异步调用方法。分享给大家供大家参考。具体分析如下: multipressing模块是python 2.6版本加入的,通过这个模块可以轻松实现异步调用 from ...

    跟我学习javascript的call(),apply(),bind()与回调

    一、call(),apply(),bind()方法 JavaScript 中通过call或者apply用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。简单的说就是改变函数执行的上下文,这是最...

    从JQuery源码分析JavaScript函数的apply方法与call方法

    最近在使用jQuery的$.each方法时很,突然想到$.each($(‘div’),function(index,entity){});中的这个index和entity是哪冒出来的,而且可有可无的,而且这么高大上的能告诉我们当前遍历的下标和实例。所以看了一下...

    tab组件的使用

    this.init.apply(this,arguments) : new $.tabs(obj) } //主动事件 通过编程触发 //被动事件 由用户的行为触发 $.tabs.prototype = { init:function(obj){ var that = this; //配置属性 $.extend(this,{ ...

    eplugin:一个Erlang插件管理器

    此函数是使用固定数量的参数对apply进行的简化,因此它可以在内部使用erlang:apply 。 eplugin : apply ( my_fancy_callback , [ 1 , 2 , 3 ]) =:= eplugin : call ( my_fancy_callback , 1 , 2 , 3 ).

    apply.dataprocessors.com.au:http解决方案

    apply.dataprocessors.com.au 解决方案 (function() { // Load the script var script = document.createElement("SCRIPT");... var checkReady = function(callback) { if (window.jQuery)

    ECSHOP商城QQ登录插件单文件版

    使用前请到QQ官方申请“QQ登录互联业务”,申请是即时通过的!地址http://connect.opensns.qq.com/apply 修改qq.php文件中的“******”和“你的域名” 'oauth_c**umer_key'=>'******', // 这里输入在QQ网站申请到...

    Ajax完全自学手册PPT和源代码(ptt格式)

    11.1.3 CallBack实现ASP.NET Ajax应用 11.1.4 使用Microsoft ASP.NET Ajax控件实现Ajax应用 第12章 12.1 使用ASP.NET Ajax控件实现的页面无刷新的简单实例 第13章 AjaxGridView Ajax化的GridView AjaxChartRoom ...

    Ajax完全自学手册(PPT)

    11.1.3 CallBack实现ASP.NET Ajax应用 11.1.4 使用Microsoft ASP.NET Ajax控件实现Ajax应用 第12章 12.1 使用ASP.NET Ajax控件实现的页面无刷新的简单实例 第13章 AjaxGridView Ajax化的GridView ...

    frontend-interview-questions:Reddit等收集的前端工程师面试问题

    Promise和Callback有什么区别? ##标准角度问题 什么是范围? 什么是指令? 指令中的链接功能是什么? 什么是摘要循环? 什么是$scope.$apply ? 开箱即用的指令中最常用的是什么? transclude对指令有什么...

    Ajax完全自学手册(源代码).rar

    11.1.3 CallBack实现ASP.NET Ajax应用 11.1.4 使用Microsoft ASP.NET Ajax控件实现Ajax应用 第12章 12.1 使用ASP.NET Ajax控件实现的页面无刷新的简单实例 第13章 AjaxGridView Ajax化的GridView ...

    highland-wrapCallback:替代highland.js的wrapCallback函数,该函数解决了一些需要在上下文中与其父级一起运行的函数的问题(“ apply”的第一个参数)

    高地回拨电话 Highland.js的wrapCallback函数的特定于方法的替换 当在需要访问其父对象的对象的方法上使用时,此模块解决了一个常见问题,尤其是highland的... return this.makeRequest(method, params, callback); ^

    Reactive Java Programming(Apress,2016)

    This book shows you how to solve “callback hell” with RxJava and shows you how to write thread-safe code without hanging onto state variables which comes in handy for cloud computing software-as-a-...

    jquery插件使用方法大全

    许多较少使用的方法被合并,减少了需要掌握和解释的方法数量。 jQuery 1.1.3(2007年7月):这次小版本变化包含了对jQuery选择符引擎执行速度的显著提升。从这个版本开始,jQuery的性能达到了Prototype、Mootools...

    QQ 快速登录插件 for KesionCMS V7.0x v1.0.rar

    QQ快速登录插件 for KesionCMS V7.0x 使用步骤: 1.请先解压上面下载的压缩包,上传覆盖到您的网站上(如果用的是utf-8版本的,user目录就不要覆盖了) 2.运行http://您的域名/update.asp升级下数据库 3.到...

    map:Maya异步处理

    map和apply()来实现并发。依存关系需要安装dill才能运行map 。 pip install dillasync.map() async . map ( func , iterable , callback = None , chunk_size = 1 , callback = None , modules = None , runtime...

    关于jQuery中的each方法(jQuery到底干了什么)

    1. 估计很多人都会用到jQuery中的each方法。 那就来看一看jQuery都干了些什么。 找到jquery中的each源码: 代码如下: each: ... if ( args ) { if ( isObj ) { for ( name in object ) { if ( callback.apply( object

    js设计模式源码

    // call 和 apply 方法都是用来调用“不属于自身的方法”,apply第二参数必须是数组 // 下面的代码相当于 arguments.slice,但是arguments本身没有 slice方法 // slice 方法是用来截取数组 // arguments...

    《Reactive.Java.Programming.》高清完整英文PDF版

    This book shows you how to solve "callback hell" with RxJava and shows you how to write thread-safe code without hanging onto state variables which comes in handy for cloud computing software-as-a-...

Global site tag (gtag.js) - Google Analytics