美文网首页
JS中的bind方法以及context上下文

JS中的bind方法以及context上下文

作者: 明灭_ | 来源:发表于2019-07-08 23:08 被阅读0次

先解释一下this的硬绑定


function foo() {
  console.log(this.a);
}

var obj = {
  a: 2
}

var bar = function() {
  foo.call(obj);
};

bar(); // 2
setTimeout(bar, 100); // 2
// 硬绑定的bar不可能再修改它的this
bar.call(window); // 2
  • 我们创建了函数 bar,并在其内部手动调用了foo.call(obj),因此强制把this绑定到了obj上,无论之后如何调用bar,它总会手动在obj上调用foo
  • 由于硬绑定是非常常用的模式,因此ES5提供了内置的方法Function.prototype.bind

bind的用法


function foo(something) {
  console.log(this.a, something);
  return this.a + something;
}

var obj = {
  a: 2
};

var bar = foo.bind(obj);
var b = bar(); // 2 3
console.log(b); // 5

context对象


第三方库的许多函数,以及JS语言和宿主环境中许多新的内置函数,都提供了一个可选的参数,通常称为上下文(context)。其作用和bind(...)一样,确保你的回调函数使用指定的this

举个🌰:

function foo(el) {
  console.log(el, this.id);
}

var obj = {
  id: "yt"
};

[1, 2, 3].forEach(foo, obj);

结果:

1 yt
2 yt
3 yt

这些函数实际上就是通过call(...)或者apply(...)实现了显式绑定。

相关文章

  • JS中的bind方法以及context上下文

    先解释一下this的硬绑定 我们创建了函数 bar,并在其内部手动调用了foo.call(obj),因此强制把th...

  • 前端面试题总结

    Function.prototype.bind实现 JS中的call、apply、bind方法thisObj的取值...

  • 简单分析apply、call、bind

    apply & call & bind 在 js中call/apply,都是为了改变函数运行的上下文(contex...

  • Linux中的Context与同步

    Linux中的Context (上下文) 基于ARM64 Context 上下文: 上下文的概念:https://...

  • 手写实现call,apply,bind

    js中改变this指向的方法: call、apply、bind、以及ES6的箭头函数面试中不乏被问到这几个方式,如...

  • ECS Entitas分析(二)__Context

    Context介绍 Context是Entitas中的上下文环境,主要用于管理当前环境下的所有Entity以及Gr...

  • js中的this(转)

    Javascript中的上下文,我认识的三个阶段 原作者:一狂 js 中的 上下文 Context,可以说是一个,...

  • koa源码笔记(二)

    context.js context.js里面放的就是用于新建上下文对象的原型代码。除了一个处理错误的onerro...

  • 进阶之光笔记二

    第五章 理解上下文Context Context的关联类 Context使用场景:1.使用Context调用方法,...

  • 事件循环

    执行环境(context),又叫执行上下文: 当我们调用一个方法的时候,js会生成一个与这个方法对应的执行环境(c...

网友评论

      本文标题:JS中的bind方法以及context上下文

      本文链接:https://www.haomeiwen.com/subject/rrmzhctx.html