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的使用相关推荐

  1. 深入理解javascript函数系列第二篇——函数参数

    前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数.本文是深入理解javascript函数 ...

  2. 怎样在javascript函数中将变量传递给服务端脚本程序?

    怎样在javascript函数中将变量传递给服务端脚本程序? (有朋友问上述问题, 愿把结论分享给大家). 摘 要:   服务器端脚本运行时, 它只会解释执行<% %>或<?php ...

  3. 史上自定义 JavaScript 函数Top 10

    史上自定义 JavaScript 函数Top 10 http://www.dustindiaz.com/top-ten-javascript/     发布:wpulog | 发布时间: 2010年4 ...

  4. HTML和JavaScript函数之间的关系

    在javaScript中有两类函数,一个是自定义的函数,一个是JavaScript中的函数.在HTML中javaSrcipt能和HTML完全的融合,也就是我们的JavaScript系统函数能直接的应用 ...

  5. python 调用 javascript函数

    python 调用 javascript函数 # pip install pyexecjs import execjs # 直接执行 print('execjs.eval:', execjs.eval ...

  6. 现代 JavaScript 函数库 usuallyjs 的安装和使用

    usuallyjs usuallyjs 是一个面向现代 Web 开发的 JavaScript 实用函数库. usuallyjs 基于 ES6 开发,抛弃了传统 Web 开发中 DOM 和 BOM 操作 ...

  7. Javascript函数执行、new机制以及继承

    JS函数执行 一个JavaScript函数fn,被执行有三种途径: fn() new fn() fn.call()或fn.apply() new机制以及继承 JavaScript中定义了一种对象,称之 ...

  8. Javascript函数的简单学习

    第九课 函数的定义与调用 1:函数的定义     语法格式     function 函数名(数据类型 参数1){//function是定义函数的关键字         方法体;//statement ...

  9. 主页面调用iframe里面匿名Javascript函数的问题

    2019独角兽企业重金招聘Python工程师标准>>> 这个问题出现已经几天了,今天终于解决了,特此记录下来. 问题的出现始于我在HTML5下采用Reveal.js来播放PPT和使用 ...

  10. javascript函数作用域与闭包

    8.8. 函数作用域与闭包        如第四章所述,JavaScript函数的函数体在局部作用域中执行,局部作用域不同于全局作用域.本章将解释这些内容和相关的作用域问题,包括闭包.[*] [*] ...

最新文章

  1. [APIO2018] Duathlon 铁人两项 圆方树,DP
  2. 译:Spring Data Repository 不区分大小写查询
  3. 前端模板Nunjucks简介
  4. 读古诗系列--(两首)题都城南庄/江楼感旧
  5. WEB攻防实战篇,思维导图
  6. Java虚拟机-第二篇-GC算法与内存分配策略
  7. bootstrap 检验 法 原理_Bootstrap教程-用SPSS中的Process插件做中介效应分析
  8. 计算机网络校园网网络设计报告,计算机网络课程设计报告-校园网的组建和应用...
  9. WP-CONTENT/UPLOADS的777,775,744,644,444文件权限设置
  10. 【SpringMVC】——图解执行流程
  11. 零基础学习CANoe Panel(13)—— 滑条(TrackBar )
  12. python中的start_python中startx有什么用
  13. 虚拟机无法在更新服务器,今win10更新导致VMware workstation pro无法打开的解决方法...
  14. 【成本收集器】目标成本与实际成本差异分析
  15. Confluence 6 使用 LDAP 授权连接一个内部目录 - 用户 Schema 设置
  16. 从插件中获取资源的几种方式[总结]_FileLocator
  17. 开发登陆按钮(丛林战争项目)
  18. 百度SEO简单防红短链接生成源码 支持加密 二维码
  19. redis之数据淘汰策略(三)lfu
  20. 【附源码】计算机毕业设计java中小型企业工作日志管理系统APP设计与实现

热门文章

  1. 抖音直播弹幕协议解析记录
  2. 地球系统模式CESM学习记录
  3. 常用网站网址(个个都是精华)
  4. layui 日期选择器 laydate详细参数用法大全,一键复制粘贴
  5. 5G NR PDSCH的相位跟踪参考信号PTRS
  6. [Python]查看Python版本
  7. Python数据挖掘与机器学习实战——回归分析——线性回归及实例
  8. 专业方向系列-01-大数据与故障诊断概述
  9. lyapunov直接法
  10. 中文版GPT3——CPM(2.6B)微调长短文本生成(对应小说歌词)