zoukankan      html  css  js  c++  java
  • JavaScript方法——call和apply

    1、相同点:

    a) 产生的效果或作用完全相同;

    b) 至少有一个参数;

    c) 第一个参数必须有且是一个对象(Object),因为就是这个家伙偷懒。

    2、不同点: 传递参数的方式。

    前提:

    1、有两个对象: A和B;

    2、B有一个方法(这里用Function代替);

    3、B的方法(Function)有两种参数传递的方式,但该方法产生的结果一样。

    一种是除第一个参数外,其余的参数都打包进一个数组内,即B.Function.apply(A,args);

    另一种是所有的参数都以各自的形式单独存在(包括第一个参数),即B.Function.call(A,arg,arg,......);

    4、A想拥有和B同样的方法,但不想自己单独创建,即只想借用别人现成的东西(好赖皮‍)。

    具体说明:

    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(某个具体的方法)。

    注意call方法中的参数args:

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

    b) args的个数为零(就是说不起作用)或1个;(是否可以有多个,需要确认)。

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

    以上的东东可有几处本人也没有试验过,比如说:

    1、“至少有一个参数”,如果没有参数回事怎样?

    2、“ 第一个参数必须有且是一个对象(Object),因为就是这个家伙偷懒。”,如果第一个参数为空又如何?

    3、“arg可以是任何类型,包括Array”,是否arg真的可以为任何类型,本人都是传递String类型的参数。

  • 相关阅读:
    坐标系的冷知识2
    坐标系的冷知识
    XMPP即时通讯(代码实现)
    约束问题
    实现ios屏幕的横竖屏自适应
    3D Touch ? 木有6s,也阔以玩!!!
    Autolayout
    Xcode7免证书真机调试
    微信支付
    二维码扫描
  • 原文地址:https://www.cnblogs.com/super86/p/4221831.html
Copyright © 2011-2022 走看看