改上下文-js-v1.0.0
2019-07-30 本文已影响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);
};
//作为构造函数
//改变回调对象