JavaScript 函数 Call的使用
call的语法
function.call(obj,...args)
Call的作用是什么呢?通俗来说:
我手机没电了,借朋友的手机发个短信,注意是借用,当你用完以后你“朋友手机的短信功能”对你来说就失效了,除非你再次借用。
这里就有两个对象我、朋友,那短信功能就是所说的方法
先来创建“我”这个对象和方法(因为手机没有电了,所以没有发短信的方法,注释掉就好):
var me={name:'我',/*sendMsg:function(target,content){console.log("【"+this.name+"】给【"+target+"】发送了短信:"+content);}*/
}
再来看朋友A对象
var friendA={name:'朋友A',sendMsg:function(target,content){console.log("【"+this.name+"】给【"+target+"】发送了短信:"+content);}
}
我们来调用一下方法发送给朋友B短信
var me={name:'我',/*sendMsg:function(target,content){console.log("【"+this.name+"】给【"+target+"】发送了短信:"+content);}*/
}var friendA={name:'朋友A',sendMsg:function(target,content){console.log("【"+this.name+"】给【"+target+"】发送了短信:"+content);}
}friendA.sendMsg('朋友B','你好啊老朋友!');
me.sendMsg('朋友B','你好啊老朋友!');
得到的结果是:
【朋友A】给【朋友B】发送了短信:你好啊老朋友!
Uncaught TypeError: me.sendMsg is not a function
可以看到朋友A正常的给朋友B发送了短信,然后我就发送不成功,为什么,因为“我”这个对象没有发送短信的方法,手机没电了,那怎么办,用call函数来借一下朋友A的手机:
这样用:friendA.sendMsg.call(me,'朋友B','你好啊老朋友!');
friendA.sendMsg 是要借用的方法
me 是谁要借用
'朋友B','你好啊老朋友!' 传入的实参
完整代码如下:
var me={name:'我',/*sendMsg:function(target,content){console.log("【"+this.name+"】给【"+target+"】发送了短信:"+content);}*/
}var friendA={name:'朋友A',sendMsg:function(target,content){console.log("【"+this.name+"】给【"+target+"】发送了短信:"+content);}
}friendA.sendMsg('朋友B','你好啊老朋友!');
//me.sendMsg('朋友B','你好啊老朋友!');friendA.sendMsg.call(me,'朋友B','你好啊老朋友!');
输出结果:
【朋友A】给【朋友B】发送了短信:你好啊老朋友!
【我】给【朋友B】发送了短信:你好啊老朋友!
朋友A和我都通过朋友A的手机向朋友B问好了,效果达到了,手机要还给朋友A,因为我的手机还是没有电,所以我还是没有发送短信这个功能!
JavaScript 函数 Call的使用相关推荐
- 深入理解javascript函数系列第二篇——函数参数
前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数.本文是深入理解javascript函数 ...
- 怎样在javascript函数中将变量传递给服务端脚本程序?
怎样在javascript函数中将变量传递给服务端脚本程序? (有朋友问上述问题, 愿把结论分享给大家). 摘 要: 服务器端脚本运行时, 它只会解释执行<% %>或<?php ...
- 史上自定义 JavaScript 函数Top 10
史上自定义 JavaScript 函数Top 10 http://www.dustindiaz.com/top-ten-javascript/ 发布:wpulog | 发布时间: 2010年4 ...
- HTML和JavaScript函数之间的关系
在javaScript中有两类函数,一个是自定义的函数,一个是JavaScript中的函数.在HTML中javaSrcipt能和HTML完全的融合,也就是我们的JavaScript系统函数能直接的应用 ...
- python 调用 javascript函数
python 调用 javascript函数 # pip install pyexecjs import execjs # 直接执行 print('execjs.eval:', execjs.eval ...
- 现代 JavaScript 函数库 usuallyjs 的安装和使用
usuallyjs usuallyjs 是一个面向现代 Web 开发的 JavaScript 实用函数库. usuallyjs 基于 ES6 开发,抛弃了传统 Web 开发中 DOM 和 BOM 操作 ...
- Javascript函数执行、new机制以及继承
JS函数执行 一个JavaScript函数fn,被执行有三种途径: fn() new fn() fn.call()或fn.apply() new机制以及继承 JavaScript中定义了一种对象,称之 ...
- Javascript函数的简单学习
第九课 函数的定义与调用 1:函数的定义 语法格式 function 函数名(数据类型 参数1){//function是定义函数的关键字 方法体;//statement ...
- 主页面调用iframe里面匿名Javascript函数的问题
2019独角兽企业重金招聘Python工程师标准>>> 这个问题出现已经几天了,今天终于解决了,特此记录下来. 问题的出现始于我在HTML5下采用Reveal.js来播放PPT和使用 ...
- javascript函数作用域与闭包
8.8. 函数作用域与闭包 如第四章所述,JavaScript函数的函数体在局部作用域中执行,局部作用域不同于全局作用域.本章将解释这些内容和相关的作用域问题,包括闭包.[*] [*] ...
最新文章
- [APIO2018] Duathlon 铁人两项 圆方树,DP
- 译:Spring Data Repository 不区分大小写查询
- 前端模板Nunjucks简介
- 读古诗系列--(两首)题都城南庄/江楼感旧
- WEB攻防实战篇,思维导图
- Java虚拟机-第二篇-GC算法与内存分配策略
- bootstrap 检验 法 原理_Bootstrap教程-用SPSS中的Process插件做中介效应分析
- 计算机网络校园网网络设计报告,计算机网络课程设计报告-校园网的组建和应用...
- WP-CONTENT/UPLOADS的777,775,744,644,444文件权限设置
- 【SpringMVC】——图解执行流程
- 零基础学习CANoe Panel(13)—— 滑条(TrackBar )
- python中的start_python中startx有什么用
- 虚拟机无法在更新服务器,今win10更新导致VMware workstation pro无法打开的解决方法...
- 【成本收集器】目标成本与实际成本差异分析
- Confluence 6 使用 LDAP 授权连接一个内部目录 - 用户 Schema 设置
- 从插件中获取资源的几种方式[总结]_FileLocator
- 开发登陆按钮(丛林战争项目)
- 百度SEO简单防红短链接生成源码 支持加密 二维码
- redis之数据淘汰策略(三)lfu
- 【附源码】计算机毕业设计java中小型企业工作日志管理系统APP设计与实现