call方法 java_漫谈JS中的call和apply方法
call和apply方法网上相关文章很多,大多是用简单的代码demo举例,这里用打比方的方式瞎扯下这两个方法到底是干嘛的?
回答这个问题前,先要明确一点,就是“JS是一门面向对象的语言”,JS处处是对象,而对象就是一个同时包含属性和方法的整体。比如数组对象Array,就有length属性,也有shift方法。“对象”就像一个家庭,“属性”就是家里的没有生命的家电家具,“方法”则是家庭的人类成员。
假设王家是穷光蛋,家徒四壁,李家是土豪,应有尽有。这是王家的儿子想过李家的日子,他要怎么办?最简单的方法就是改姓“入赘”成为李家人,成了一家人后,李家的东西就随便王二用了。这个“入赘”改姓入籍别人家享福的行为在JS世界就叫call或者apply。入赘别人家后自己老家的东西还能不能用呢?答案是一样用,JS的call和apply也是这样。
比如代码obj1.fn1.call(obj2)的意思在客观世界就是,obj1家的穷光蛋fn1入赘到obj2家,然后穷光蛋fn1就可以随便用土豪obj2家的东西了。同时,obj1.fn1.call(obj2)和obj1.fn1.apply(obj2)功能是一样的,那apply和call有啥区别呢?它们的区别就在传参的方式上,call和apply的第一个参数都是对象名(要入赘的家庭),后面都是参数,区别就是call的参数要一个个传,像obj1.fn1.call(obj2,1,2,3)这样,但是apply要用数组打包一起传,像obj1.fn1.call(obj2,[1,2,3])这样。
这里说call和apply是“入赘”的意思也不合适,感觉比喻成"结婚"更合适,参与结婚的人就同时成为了两家的人,然后两家的东西都可以用。再回到代码代码obj1.fn1.call(obj2)的意思,那就应该说是,obj1家的fn1嫁到obj2家,从此fn1在obj1和obj2家都像自己自己家一样,东西随便用。不过,一般用了aplly方法后,主要是想用obj2对方家的东西.
有的人可能会说,你能不能不扯淡,给我用可以运行的代码举个例子说说,那我就自荐一篇自己之前的文章:《apply和call对this的影响》
call方法 java_漫谈JS中的call和apply方法相关推荐
- JS中的call()和apply()方法(转)
转自:http://uule.iteye.com/blog/1158829 JS中的call()和apply()方法 博客分类: JS 1.方法定义 call方法: 语法:call([thisObj ...
- js中call()方法和apply方法的使用
1. 方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- JS中的call()和apply()方法
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: ...
- js中的call和apply方法的区别
一.call和apply的说明 1.call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以 ...
- js中修改this的指向方法整理
JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,Ja ...
- JavaScript -- 时光流逝(三):js中的 String 对象的方法
JavaScript -- 知识点回顾篇(三):js中的 String 对象的方法 (1) anchor(): 创建 HTML 锚. <script type="text/javasc ...
- js中改变原数组的方法以及解决改变原数组的方法
js中改变原数组的方法以及解决改变原数组的方法 参考文章: (1)js中改变原数组的方法以及解决改变原数组的方法 (2)https://www.cnblogs.com/Ingots/p/1151701 ...
- js中ES6新增的数组方法reduce(),和数组去重,降维。
js中ES6新增的数组方法reduce() js数组reduce()详解 基本概念: reduce()方法接收一个函数作为累加器,数组中的每一值(从左到右)开始缩减,最后成为一个值 reduce()为 ...
- php js unescape,PHP实现JS中escape与unescape的方法
本文实例讲述了PHP实现JS中escape与unescape的方法.分享给大家供大家参考,具体如下: JavaScript中的escape和unescape是吧字符串转换为unicode十六进制编码, ...
- 总结JS中常用的数组的方法大全
总结JS中常用的数组方法 JS中常用的数组方法总结 数组(Array)是一种复杂的数据类型,它属于Object(对象)类型,用来将一组数组合在一起,通过一个变量就可以访问一组数据.在使用数组时,经常会 ...
最新文章
- 非此即彼的逻辑错误_超全MBA逻辑答题口诀,快收藏!
- 计算机硬件的作用论文,计算机硬件的作用论文.doc
- Java程序员需要掌握的计算机底层知识(三):进程、线程、纤程、中断
- 工作297:shift+$形成元
- Pytorch离线安装 matlibplot
- MATLAB 画图 x轴换成 字符串
- BZOJ3835 [Poi2014]Supercomputer 【斜率优化】
- 倒车雷达C语言程序,基于单片机汽车倒车雷达系统设计(含程序).doc
- Linux进程管理和怎样布置定时任务
- iOS开发 触觉体验(UIFeedbackGenerator)的使用
- STM32唯一序列号UID--HAL_GetUIDw0详解
- ubuntu18.04 下海康工业相机hikrobot_camera的使用及问题的解决
- 使用随机文件流类RandomAccessFile将一个文本文件倒置读出
- 为什么每个语言都要和Java作比较?一文带你搞懂!
- HTML5期末大作业:轮滑运动体育类人物介绍主题网站设计(12页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计
- JavaScript手风琴实现
- 【python】PLY词法分析实验「编译原理」
- TeamViewer14 ubuntu 破解商业环境
- IOS 将文字写绘制成图片并转换为像素数据
- C语言正数和负数循环右移,左移,把某正数的第m位(从0开始)到n位取反