首页 > 其他分享 >js的bind 的原理

js的bind 的原理

时间:2022-11-05 14:31:46浏览次数:55  
标签:function bind proptype js let context 原理 fn

js 的bind 方法主要绑定this的指向 bind 方法也会返回是个bind后的函数。 知道它功能我们就可以自定义bind功能 let object= {name:'jeff'} function fn(){ console.log(this.name) } //自定band方法 Function.prototype._bind = function(context){ let that = this // 指定this
return function(){ that.apply(context) } } let hand = fn._bind();//测试 上面的bind 没有考虑到带参数的函数 // 下面带参数的 Function.prototype._bind = function(context){ let that = this // 指定this
let bindArg
=Array.proptype.slice.call(argurments,1) //取出类参数中第一位 return function(){ let arg = Array.proptype.slice.call(argurments)
that.apply(context,arg.concat(bindArg)) } }

// 假如考虑如果被new的函数,当前的this就是当前的函数

Function.prototype._bind = function(context){ let that = this // 指定this
let bindArg
=Array.proptype.slice.call(argurments,1) //取出类参数中第一位 function tempFn (){} return function _fn(){ let arg = Array.proptype.slice.call(argurments)
that.apply( this instannceof _fn ? this : context,arg.concat(bindArg)) } tempFn.proptype = this.proptype // 关联函数 _fn.proptype = new temFn(); return _fn }

标签:function,bind,proptype,js,let,context,原理,fn
From: https://blog.51cto.com/u_14582569/5825968

相关文章

  • CSS & JS Effect – Textarea Autoresize
    前言这是一个很普遍的体验,而且实现起来也很简单哦 参考YouTube– HowtoAutoResizeTextareausingHTMLCSS&JavaScript 效果我故意加了border和pad......
  • Jmeter断言之Json Assertion
    现在大部分的程序都是通过json格式返回数据,所以JsonAssertion也是非常重要的一个组件添加JsonAssertion组件使用方法 ......
  • JS中的变量声明
    一、引入1.定义:在JavaScript中创建变量被称为“声明”变量。JavaScript中变量声明又分为显示声明和隐式声明。其中显示声明中,被“声明”变量之前的关键词有var、let、cons......
  • 使用nvm配置nodejs,已经nodejs使用的初始化步骤
    <-----------------------------------------nvm是什么------------------------------------------------->nvm:进行node版本切换管理手动配置nvm,需要进入地址https://gi......
  • 7点 讲明白地图切片的概念与原理
      有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少......
  • JS代码压缩
    JS代码压缩本文分享一种技术,用于实现JS代码压缩。该技术使用LZW算法。LZW算法又叫“串表压缩算法”,简而言之,通过建立一个字符串表,用较短的代码来表示较长的字符串来实现压缩......
  • 你知道Vue响应式数据原理吗
    1.Vue2的响应式式原理主要是通过Object.defineProperty的方法里面的setter和getter方法的观察者模式来实现。也就是在组件的初始话阶段给每一个data属性都注册一个setter......
  • etherjs基本用法
    前言:直到2022.11.5才知道etherjs真正的用法,之前只用过web3.js,原来两个库是并行的,选择一个就好。 连接etherjs需要的几要素:infra_keyprivate_keyrpc_url 连接合约......
  • Node.js中的模块
    CommonJS模块CommonJS是一种规范,它定义了JavaScript在服务端运行所必备的基础能力,比如:模块化、IO、进程管理等。其中,模块化方案影响深远,其对模块的定义如下:......
  • 【附源码】pdf.js批注注释插件库,保存导出pdf批注注释(高亮/下划线/自由文本/自由画笔)
    我开发了pdf.js增加pdf批注注释插件库,支持写入批注到pdf中并保存,为目前纯前端javascript最佳实现方案,仅使用了最新PDF.jsdist版本,可以十分方便的集成到任意web项目中。......