基础-bind方法及实现原理

1. bind方法

  • 函数调用bind方法, 可以指定函数内部的this, 并把bind函数的第一个参数之后的参数拼接到返回的新函数的实参之前.
  • 示例
var obj = {a: 1}
function fn(a,b,c,d,e,f) {
  console.log(this)
  console.log(a,b,c,d,e,f)
}
var newFn = fn.bind(obj,1,2,3)
newFn(4,5,6) 
  • 输出
[object Object] {
  a: 1
}
1
2
3
4
5
6

2. 实现一个自己的bind方法

Function.prototype._bind = function(obj) {
  if(typeof this !== 'function') {
    throw new Error("只有函数才能调用bind方法")
  }
  let that = this
  // 去掉arguments的第一项 
  let args = Array.prototype.slice.call(arguments,1)
  return function() {
    // 去掉arguments第一项
    arguments = [].splice.call(arguments,1)
    args = args.concat(arguments)
    that.apply(obj,args)
  }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,845评论 0 4
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,195评论 0 5
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 4,814评论 0 1
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 2,688评论 0 0
  • 今天晚饭尹秀鑫在她奶奶家吃的,回来我问她,吃完饭了?出去跳舞了?今天作业写好了吗?她妈妈说今天背了两首古诗,我说:...
    地球与我同在阅读 1,427评论 1 1

友情链接更多精彩内容