call和applay的使用

  1. call方法
  • 调用一个对象的一个方法,以另一个对象替代当前的对象。说明白一点,其实就是更改对象的内部指针,即改变对象this的指向内容;参考代码如下:

  

function Obj(){      this.value="obj的变量";   }
    var value="the window";
    function fn(){       alert(this.value);     }

    window.fn();   //the window
    fn.call(window);  //the window
    fn.call(new Obj());   //obj的变量

 

var fun = new function(){
   this.a="fun";

}
 var  myfun =function(x){
   var a ="myfun";
   alert(this.a);
alert(x)
}
myfun.call(fun,‘var ‘)//fun   var

  

最后,分析结果

1、全局对象window调用函数fn,this指向window对象,因此this.value为the window

2、函数fn调用call方法,this默认指向第一个参数window对象,因此this.value也为the window

3、函数fn调用call方法,this默认指向第一个参数new Obj(),即Obj的对象,因此this.value为Obj的成员变量obj的变量

5、函数myfun调用call方法,this默认指向第一个参数fun函数对象,因此this.value为this.a,即fun

6、函数myfun调用call方法,第二个参数属于函数对象myfun的参数,因此alert(x)为第二个参数var

对于call和apply两者在作用上是相同的。但两者在参数上是不同的。对于第一个参数都一样,但对于第二个参数,apply传入的是一个参数数组,也就是将多个参数组成一个数组传入,而call则作为call的参数传入:

fun.call(fun1,var1,var2,var3)

fun.apply(fun1,[var1,var2,var3])

时间: 2024-08-04 20:06:22

call和applay的使用的相关文章

js中三个默认方法call,applay,bind

这三个都是函数自带的方法(Function.prototype),这三个方法都能够改变函数内部 this的指向, call //call方法接收三个参数,第一个是this指向,第二个,三个是传递给函数的实参,可以是数字,字符串,数组等类型的数据类型都可以 function fn(n1,n2){ console.log(this); console.log(n1,n2) } fn.call();//=>this:window; let obj = {fn:fn}; fn.call(obj);//=

SharedPreferences 源码分析

我们先看一下SharedPreferences (下文用 SP 简写替代)的用法. SharedPreferences preferences = getSharedPreferences("name", Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("key", "value"); editor.comm

网站前端_JavaScript.0011.JavaScriptFunction

函数类型: 说明: Function类型实际上是对象,每个函数都是Function类型的实例,而且都与其它引用类型一样具有属性和方法,由于函数是对象,因此函数名实际上也是一个指向函数对象的指针 //函数声明 //        - 普的函数声明 var max = function(x, y){     return x>y?1:(x==y?0:-1) } console.log(max(1, 2))           - 使用Function构造函数 var func= new Functi

javascript的Function 和其 Arguments

http://shengren-wang.iteye.com/blog/1343256 javascript的Function属性:1.Arguments对象2.caller 对调用单前函数的Function的引用,如果是顶层代码调用, 则返回null(firefox返回undefined). 注:只有在代码执行时才有意义3.length 声明函数是指定的命名参数的个数(函数定义是,定义参数的个数)4.prototype 一个对象,用于构造函数,这个对象定义的属性和方法 由构造函数创建的所有对象

一步一步学会puppet(一)

简介 puppet是一种Linux.Unix.windows平台的集中配置管理系统: 使用自有的puppet描述语言,可管理配置文件.用户.cron任务.软件包.系统服务等,puppet把这些系统实体称之为资源: puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系 puppet的基础架构 puppet是集中式的配置管理工具,通过自有配置语言对节点进行目标状态定义,并能够基于网络实现目标状态的维护: puppet的工作模型 puppet通过声明性.基于模块的方法进行IT自动化

javascript知识整理之this

js中的this是一个头疼的问题,尤其对于笔者这种初级的菜鸟来讲,下面梳理下this的知识,可以当做是初级进阶也好入门也罢,总归输出的才是自己掌握的: Js中this不是由词法作用域决定的 而是调用时动态指定,这就有点麻烦了,如果不能明确知道函数调用时的词法作用域this的指向也就只能靠猜了,算一卦这种模式不是不推荐而是根本不能用,要是真的不能确定this指向 可以查一下调用栈 或是上个断点之类的,当然alert这种较为原始的方法也是有效的不过确实有点low; Js函数调用方式大致可以归为四类(

Allegro PCB -内层分割,比如电源层需要分割几种电源

内层分割,比如电源层需要分割几种电源. (1).点击Display -> Assign Color 在Option中,先取一种颜色作为高亮显示的颜色. (2).在Find中,选Net,点击more,选择要高亮显示的电源网络,点击Apply. 就可以看到该网络用指定的颜色高亮显示出来. 然后在Find by Name Property中把刚才选择的移除,重新选择另外一个电源网络名,这时不要急着点Apply,先到Option中,选择另外一种颜色以便区别其他网络名的颜色,在到Find by Name

初探Backbone

Backbone简介 中文API:http://www.csser.com/tools/backbone/backbone.js.html 英文API:http://backbonejs.org/ Backbone是构建javascript应用程序的一个优秀的类库.他简洁.轻量级.功能实在. backbone采用MVC模式,本身提供了模型.控制器和视图从而我们应用程序的骨架便形成. backbone依赖于underscore,他是一个类库,提供了60多个函数处理数组操作.函数绑定,以及javas

关于cocos2d-x 和安卓之间的相互调用

近期在研究cocos2d游戏移植安卓须要调用非常多方法.所以在研究之中写下它们之间相互调用 首先,cocos2d调用安卓 在一个.h文件里加入头文件 #include <jni.h> #include "platform\android\jni\JniHelper.h" JniMethodInfo minfo;//定义Jni函数信息结构体 //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数 bool isHave = JniHelper: