正题:

Function.prototype.apply(instance,args)  //args 数组

Function.prototype.Call(instance,a1,a2)  //a1,a2 单个参数

function People() {
this.name = 'jinho';
this.showName = function() {
          console.log(this);
          console.log(this.name); };
}
 function Student() {
this.name = 'student';
}

  

var p= new People(); //创建对象
var s= new Student(); //创建对象

p.showName();

输出:

p.showName.call(s);

输出:

说明showName函数的当前this已经变为p了,神奇之处来了! s对象本来没有showName()方法啊! 可以他还是执行了! 是由于call函数把 s 作为了 this!

p.showName.apply(s);

call函数和apply函数的区别是call 的语法是function.call(obj,param1,param2……);applay的语法是function.call(obj,[]/*params[]参数数组*/);

再附上我的同事evan给我讲解的一个例子:

function test(a,b) {
console.log(this);
console.log(a);
console.log(b);
}

当调用test.call({},'1','2')时,前面的{}充当了test函数里的this,后面的1,2才是函数test的参数赋值

另外call和apply的用法只是在传参的时的形式不一样,如上例

JS中两个重要的方法 call & apply 学习的更多相关文章

  1. 关于js中两种定时器的设置及清除(转载)

    1.JS中的定时器有两种: window.setTimeout([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法 ...

  2. JS合并两个数组的方法

    JS合并两个数组的方法 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况.比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合 ...

  3. JavaScript -- 时光流逝(三):js中的 String 对象的方法

    JavaScript -- 知识点回顾篇(三):js中的 String 对象的方法 (1) anchor(): 创建 HTML 锚. <script type="text/javasc ...

  4. js中两个对象的比较

    代码取自于underscore.js 1.8.3的isEqual函数. 做了一些小小的修改,主要是Function的比较修改. 自己也加了一些代码解读. <!DOCTYPE html> & ...

  5. 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解

    提醒大家,Object.prototype.toString().call(param)返回的[object class]中class首字母是大写,像JSON这种甚至都是大写,所以,大家判断的时候可以 ...

  6. JavaScript -- 时光流逝(五):js中的 Date 对象的方法

    JavaScript -- 知识点回顾篇(五):js中的 Date 对象的方法 Date 对象: 用于处理日期和时间. 1. Date对象的方法 <script type="text/ ...

  7. 在JS中调用CS里的方法(PageMethods)

    在JS中调用CS里的方法(PageMethods) 2014年04月28日 11:18:18 被动 阅读数:2998   最近一直在看别人写好的一个项目的源代码,感觉好多东西都是之前没有接触过的.今天 ...

  8. Angular.js中处理页面闪烁的方法详解

    Angular.js中处理页面闪烁的方法详解 前言 大家在使用{{}}绑定数据的时候,页面加载会出现满屏尽是{{xxx}}的情况.数据还没响应,但页面已经渲染了.这是因为浏览器和angularjs渲染 ...

  9. JS中的五种去重方法

    JS中的五种去重方法 第一种方法: 第二种方法:  第三种方法: 第四种方法: 第五种方法:优化遍历数组法 思路:获取没重复的最右一值放入新数组 * 方法的实现代码相当酷炫,* 实现思路:获取没重复的 ...

随机推荐

  1. Java 关键字static final使用总结

    Static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被 ...

  2. Hibernate断网修改配置文件实现正常验证运行

    hibernate.cfg.xml中声明部分: <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Conf ...

  3. 作业4.5-2用for循环打印菱形

    package lx; public class lx { public static void main(String[] args) { for(int i = 1;i <= 10 ;i++ ...

  4. iOS开发小技巧--修改按钮内部图片和文字之间的间距(xib)

    调整按钮的Edge属性,选择调整图片的Edge还是label的Edge,如图:

  5. Javascript写俄罗斯方块游戏

    俄罗斯方块这个游戏也做了移动端的兼容, 这个游戏难点是怎么翻转方块, 自己实现的方式是把方块放到一个二维数组, 然后逆时针旋转二维数组. 也有别的方法,比如直接用一个全局变量代表一个方向, 翻转的时候 ...

  6. lucene-查询query->BooleanQuery “与或”搜索

    BooleanQuery也是实际开发过程中经常使用的一种Query.它其实是一个组合的Query,在使用时可以把各种Query对象添加进去并标明它们之间的逻辑关系. BooleanQuery本身来讲是 ...

  7. ivy,ivyde插件-eclipse

    官方共享更新磁盘下载 http://www.apache.org/dist/ant/ivyde/updatesite/ http://ant.apache.org/ivy/download.cgi 简 ...

  8. The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 51716619E084DAB9

    sudo su gpg --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9 gpg -a --export 51716619E0 ...

  9. Leetcode 306. Additive Number

    Additive number is a string whose digits can form additive sequence. A valid additive sequence shoul ...

  10. 使用oracle存储过程遇到的坑

    之前一直都是用sqlserver 突然用oracle  蛋疼的连存储过程执行一个查询都不会 各种百度锕  现在记录下面的语法问题 orcale创建一个存储过程的语法. create or replac ...