1.

var func=function(a,b,c){console.log([a,b,c]);};
func.apply(null,[1,2,3]);  //[1,2,3]
func.call(null,1,2,3);  //[1,2,3]
func.bind(null,1,2,3);  //无输出
func.bind(null,1,2,3)();    //[1,2,3]
func.bind(null)(2,3,4)  //[2,3,4]

解析:

当使用apply或call时,如果我们传入第一个参数为null,函数体内的this会指向默认的宿主对象,在浏览器中则是window。

apply和call只是参数传入形式不同,其他一样。但bind则不同:前面的调用call或apply时,函数直接运行,但bind不会运行,而是返回一个绑定上下文的函数并且this永远的指向bind括号中的第一个参数。

2.

call、apply和bind主要有2个作用:

①改变this的指向;

②借用其他对象的方法

转载于:https://www.cnblogs.com/jacksplwxy/p/6843307.html

(O)JS核心:call、apply和bind相关推荐

  1. js之call,apply和bind的模拟实现

    了解call,apply和bind对于看一些源码以及封装一些工具有很大的作用. 如果想要了解并熟练使用它..就必须知道他的基本的实现原理. 一,基本用法 使用 let obj = {a: 18 }fu ...

  2. 理解js中的this指向以及call,apply,bind方法

    <script> function a(){var user = "追梦子";console.log(this.user); //undefinedconsole.lo ...

  3. 手动封装js的call和apply和bind和typeof和new方法

    我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣一起学习前后端知识 闲来无事做 不如敲代码今天讲一下js里面的callapply和bind和typeof方法的手动封装由于最近比较忙但是有时 ...

  4. JS高级——手写call()、apply()、bind()

    0.call.apply.bind的区别 bind,call,apply的作用都是用来改变this指向的 call方法 call方法的第一个参数是this的指向 后面传入的是一个参数列表(注意和app ...

  5. 【JS】call,apply,bind

    [JS]call,apply,bind const steven = {name: "Steven",phoneBattery: 70,charge: function (leve ...

  6. JS 中 call()、apply()、bind() 的用法

    其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例 1 obj.objAge; // 17obj.myFun() // 小张年龄 undefined 例 2 show ...

  7. 方法apply作用于对象sort时失败_浅析call、apply 与 bind

    点击上方蓝色字体轻松关注 前言 经典模式题:call.apply 与 bind的区别.来吧,今天搞一搞. call(thisArgs [,args...]) 该方法可以传递一个thisArgs参数和一 ...

  8. 微信小程序之apply和call ( 附示例代码和注释讲解) apply call  bind

    微信小程序开发交流qq群   173683895 相同点:作用是一样的,它们能劫持另外一个对象的方法,继承另外一个对象的属性: js中的call(), apply()和bind()是Function. ...

  9. JavaScript中的call、apply、bind深入理解

    一.函数的三种角色 首先要先了解在函数本身会有一些自己的属性,比如: length:形参的个数: name:函数名: prototype:类的原型,在原型上定义的方法都是当前这个类的实例的公有方法: ...

  10. 记录call、apply、bind的源码

    记录一下call.apply.bind的源码,然后从根本上明白其用法. 都知道call.apply与bind的用法,call(this,...arguments).apply(this,[argume ...

最新文章

  1. CUDA C++编程接口:编译
  2. oracle Ratio_to_report的用法
  3. 2015年中国钢铁企业排名50强名单
  4. 使用docker快速启动jetlinks
  5. GitHub 标星 5000+!学生党学编程,有这份资料就够了!
  6. jsp将鼠标放到那显示信息
  7. 【软件项目管理】知识点整理
  8. Android内核开发:为什么刷机后系统第一次启动会很慢?
  9. 【实用sci论文常用词语】
  10. 批量一键删除QQ空间说说软件
  11. 基于 Flink 构建全场景多维度实时计算数仓
  12. 谷歌翻译不能用,解决方案
  13. volatility用法
  14. Excel如何为介于区间的数值设置背景颜色?
  15. Matter理论介绍-通用-1-03:桥接器-数据结构
  16. python学生信息管理系统项目总结_学生信息管理系统案例小结
  17. mysql多表查询视图_mysql多表查询并创建视图
  18. 词霸天下---词根252【-emper- = -imper- 命 令】
  19. Go 爬虫之 colly 从入门到不放弃指南
  20. c与java socket通信

热门文章

  1. c语言程序的生命周期(编写、预处理、编译、汇编、链接、执行)
  2. java 拦截器 排除_java – Spring MVC Interceptor排除HTTP方法的路径
  3. php公众获取用户信息,PHP--通过公众号获取用户微信信息
  4. PAT (Basic Level) Practice1030 完美数列
  5. PAT (Basic Level) Practice1016 部分A+B
  6. 防止网线中的信号衰减很重要
  7. 拓扑排序:如何确定代码源文件的编译依赖关系
  8. recover/panic
  9. Spring或Hibernate其实都提供了透明处理Clob的方法
  10. Java网络编程从入门到精通(24):实现HTTP断点续传下载工具(附源代码)