首页 > Web开发 > 详细

你不知道的JS系列 ( 21 ) - this显示绑定

时间:2020-03-06 10:38:17      阅读:49      评论:0      收藏:0      [点我收藏+]
隐式绑定是必须在一个对象内部包含一个指向函数的属性,并通过这个属间接引用函数,从而把 this 间接隐式绑定到这个对象上。
显示绑定是通过 call() 和 apply() 方法。它们的第一个参数是一个对象,它们会把这个对象绑定到 this.

 

call
function foo() {
  console.log(this.a);
};
var obj = {
  a: 2
};
foo.call(obj); // 2

通过 foo.call(obj),调用 foo 时强制把它的 this 绑定到 obj 上。这种绑定是一种显示的强制绑定,我们称之为硬绑定




apply
function foo(something){
  console.log(this.a, something);
  return this.a + something
}
var obj = {
  a: 2
}
var bar = function() {
  return foo.apply(obj, arguments);
}
var b = bar(3); // 2 3
console.log(b); //5

硬绑定的典型应用场景就是创建一个包裹函数,传入所有的函数并返回接受到的所有值



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(3); // 2 3
console.log(b); //5

由于硬绑定是一种非常常用的模式,所以在 ES5 中提供了内置的方法 Function.prototype.bind。bind 会返回一个硬编码的新函数,它会把参数设置为 this 的 上下文并调用原始函数



你不知道的JS系列 ( 21 ) - this显示绑定

原文:https://www.cnblogs.com/wzndkj/p/12424593.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!