一、call和apply区别

传递参数的方式。用法上不同,主要是参数不完全同

(1)、B.Function.call(A,arg,arg)

这个例子是讲A对象“调用”B对象的Function(某个具体的方法)。

注意call方法中的参数arg:

a) arg的个数为零或多个;

b) arg可以是任何类型,包括Array。

call在这里译为“调用”,在JS中可以理解为“A对象调用B对象的某个方法”;

(2)、B.Function.apply(A,args)

这个例子是讲A对象“应用”B对象的Function(某个具体的方法)。

注意apply方法中的参数args:

a) args是Array对象的一个实例,也就是一个数组;

b) args的个数为零(就是说不起作用)或1个;。

apply在这里译为“应用”,即“A对象应用B对象的某个方法”。

二、call和apply实例

function Person(name,age) {
this.name=name;
this.age=age;
this.money = 500;
} function myFun(money) {
alert(this.money);
} var money = 100;
myFun(money);
//return 100; //window.myFun(money); save to myFun(money);
//这个时候this指向的是window对象,其实myFun函数和定义的var money = 100;都作为window对象子对象(即全局对象) myFun.apply(window,[]); //save to window.myFun.apply(window,[]);
//return 100; //同上 myFun.apply(new Person('zhangsan',23),[]);
//return 500, 空数组作为参数,仅符合语法要求
//这个时候myFun方法里面的this指向的是new Person('zhangsan',23)对象,二不是myFun类(函数),故弹出500 myFun.call(new Person('zhangsan',23),money,300,'mycardId');
//return 500, 后面money,300和mycardId是参数列表作为参数,一一列出
//这个时候myFun方法里面的this指向的是new Person('zhangsan',23)对象,二不是myFun类(函数),故弹出500

来源于:http://blog.csdn.net/whaxrl/article/details/25116809

JS中call和apply区别有哪些 记录的更多相关文章

  1. js中const,var,let区别(转载)

    js中const,var,let区别 来源:https://www.cnblogs.com/zzsdream/p/6372729.html 今天第一次遇到const定义的变量,查阅了相关资料整理了这篇 ...

  2. js中call和apply的实现原理

    js中call和apply的实现原理            实现call的思路: /* 还有就是call方法是放在Function().prototype上的也就是构造函数才有的call方法 (我门可 ...

  3. 区别和详解:js中call()和apply()的用法

    1.关于call()和apply()的疑点: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2.语法和 ...

  4. js中call、apply和bind的区别

    在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢.在说区别之前还是先总结一下三者的相似之处:1.都是用来改变函数的this对象的指向的.2.第一个参数都是this要指向的对 ...

  5. js中的call,apply,bind区别

    在JavaScript中,call.apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向. call.apply.bind方法的共同点和区别:app ...

  6. js中call、apply和bind到底有什么区别?

    介绍 在js中,每个函数的原型都指向Function.prototype对象(js基于原型链的继承).因此,每个函数都会有apply,call,和bind方法,这些方法继承于Function. 它们的 ...

  7. JS中 call() 与apply 方法

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  8. JS中call、apply的用法说明

    JS Call()与Apply()的区别 ECMAScript规范给所有函数都定义了Call()与apply()两个方法,call与apply的第一个参数都是需要调用的函数对象,在函数体内这个参数就是 ...

  9. js中call、apply、bind那些事

    前言 回想起之前的一些面试,几乎每次都会问到一个js中关于call.apply.bind的问题,比如- 怎么利用call.apply来求一个数组中最大或者最小值 如何利用call.apply来做继承 ...

随机推荐

  1. 62. Unique Paths (走棋盘多少种不同的走法 动态规划)

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  2. Winter-1-A A + B 解题报告及测试数据

    Time Limit:1000MS Memory Limit:32768KB Description Calculate A + B. Input Each line will contain two ...

  3. 使用Xib创建自定义视图(不是cell)时需要注意的问题

    开发项目过程中,有些地方不免会用到Xib来提高开发效率,如果你的手速够快,写代码建视图,我并不反对这样做.因为我以前也是纯手写代码开发. 进入正题,Xib好用,但是这些下面这些问题需要注意一下. 问题 ...

  4. SSH整合不错的博客

    https://blog.csdn.net/struggling_rong/article/details/63153833?locationNum=9&fps=1  好好看看看哦

  5. hadoop 一些命令

    关闭访问墙  service iptables stop hadoop dfs -mkdir input hadoop dfs -copyFromLocal conf/* input hadoop j ...

  6. mysql left join中where和on条件的区别

    left join中关于where和on条件的几个知识点: 1.多表left join是会生成一张临时表,并返回给用户 2.where条件是针对最后生成的这张临时表进行过滤,过滤掉不符合where条件 ...

  7. M4中遇到的问题

    MDK5的安装以及破解 这里遇到了一个问题,PDF上并没有扯个界面我就先截了个图然后点安装,后来看来这其中并没有什么问题 在这里就会出现卡死的情况,也就是说并不能从这个界面上下载两个相应的安装包 在M ...

  8. 20145303 《Java程序设计》第8周学习总结

    20145303 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 NIO和NIO2 1.NIO的定义 InputStream.OutputStream的输入输出,基本上是以 ...

  9. 什么时候使用namespace

    #include<iostream.h> 不用using namespace std; #include<iostream>要用using namespace std;

  10. mybatis映射文件_select_resultMap

    实体类: Employee.java类: package com.hand.mybatis.bean; public class Employee {        private Integer e ...