对JavaScript中call和apply的理解

news/2024/7/19 12:55:23 标签: js, 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类型的参数。



http://www.niftyadmin.cn/n/1622635.html

相关文章

jdbc mysql数据库增删查改_通过JDBC完成对MySql数据库的增删改查

下面将介绍如何通过JDBC来对数据库进行增删改查的操作,我们以MySQL为例:1.连接数据库private static Connection connectDatabase(){//连接数据库的url是固定的格式,127.0.0.1是MySQL数据库的地址,test是数据库名String url &quo…

java栈内存堆内存_JAVA中栈内存和堆内存

Java把内存划分成两种:一种是栈内存,一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后&#xf…

Java之美[从菜鸟到高手演变]之Java学习方法

source: http://blog.csdn.net/zhangerqing/article/details/8196577 前段时间逛论坛,总会有很多新手很迷茫,问到:到底该怎么学好Java,这个问题很重要,尤其对于像我们这样大多数都是靠自学的人来说,找到一个…

java中字符的比较_Java中字符串的比较

一定要谨记,字符串不是基本的数据类型!!!可以使用equals方法检测两个字符串是否相等。对于表达式:s.equals(t);如果字符串s与字符串t相等,则返回true;否则,返回false。需要注意&…

java多线程模式_通俗易懂地告诉你“模版模式”在java多线程中的应用

花10分钟认真的看完一篇文章,有时候会比敲60分钟代码更管用在上一篇文章中和大家分享了,java多线程中为什么是调用start方法启动而不是run方法,相信爱思考的小伙伴可能注意到了在Thread源码的start方法中除了调用run方法(实际是调用start0方法…

Simon Tatham:如何有效地报告Bug

引言为公众写过软件的人,大概都收到过很拙劣的bug(计算机程序代码中的错误或程序运行时的瑕疵——译者注)报告,例如:在报告中说“不好用”;所报告内容毫无意义;在报告中用户没有提供足够的信息&…

eclipse安装Spring-Tool-Suite(STS)插件无法找到对应的版本问题

近期学习springBoot,需要eclipse集成SpringBoot,首先需要安装一个STS插件。然后按照网上给定的安装流程去官网http://spring.io/tools/sts/all找到了自己对应的版本,楼主用的eclipse版本是mars2 4.5.2。在官网上对应的找到两个下载&#xff0…

java kafka client_kafka java api客户端编程

环境Ubuntu18.04zookeeper3.4.13kafka2.1.1说明因为是使用了最新的kafka,所以很多方法都过时了。研究了很久新api的用法,然后在此记录。zkUtil已经不用了,改用AdminClient。主要功能包括:创建Topic:createTopics(Colle…