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类型的参数。

  • 相关阅读:
    又玩起了“数独”
    WebService应用:音乐站图片上传
    大家都来DIY自己的Blog啦
    CSS导圆角,不过这个代码没有怎么看懂,与一般的HTML是不同
    网站PR值
    CommunityServer2.0何去何从?
    网络最经典命令行
    炎热八月,小心"落雪"
    Topology activation failed. Each partition must have at least one index component from the previous topology in the new topology, in the same host.
    SharePoint 2013服务器场设计的一些链接
  • 原文地址:https://www.cnblogs.com/super86/p/4221831.html
Copyright © 2011-2022 走看看