改上下文-js-v1.0.0

---
title:改上下文
date: 2018-06-09 16:29:00
updated: 2018-06-10 12:00:00
categories:
- 语言基础
- 函数编程
tags:
- nodejs
---

#什么是它?

改变某个函数运行时的上下文(context)。换句话说,改变函数体内部 this 的指向。

#如何实现?

let obj = {
    x: 81,
};
let foo = {
    getX: function() {
        return this.x;
    }
}
// 方式01
console.log(foo.getX.bind(obj)()); 
// 方式02
console.log(foo.getX.call(obj));
// 方式03
console.log(foo.getX.apply(obj));  
// 方式04
//使用self或其他变量来固定this的指向
Function.prototype.bind = function(context){
  let self = this; 
  return function(){
      return self.apply(context,arguments);
  };
};

三者比较

类目 相同 不同
call 01;02 立即调用;03
apply 01;02 立即调用;04
bind 01;02 返回对应函数,便于稍后调用;03

01.改上下文
02.第一个参数都是this要指向的对象
03.后续参数传入的形式为参数形式
04.后续参数传入的形式为数组形式

#一些示例?

//定义一个 log 方法,让它可以代理 console.log 方法
function log(){
  console.log.apply(console, arguments);
};


//作为构造函数

//改变回调对象

mdn-bind-function

你可能感兴趣的:(改上下文-js-v1.0.0)