改上下文-js-v1.0.0

作者: 一点金光 | 来源:发表于2019-07-30 08:21 被阅读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

    #什么是它? 改变某个函数运行时的上下文(context)。换句话说,改变函数体内部 this 的指向。 #如何实...

  • 修改上下文菜单样式

    最近的工作中需要更改一些界面效果,遇到了上下文菜单ContextMenu,就去搜索了一下如何更改上下文菜单的效果,...

  • 添加新的touchscreen驱动

    Kernel 中添加新的驱动: 一、 1 添加整个驱动目录 2 修改上级Makefile文件 3 修改上级Kcon...

  • 2018-01-19旧版production-order添加字段

    1 原来 更改上传的参数

  • 改上小学了!

    妹妹家二孩改上小学了。可是老家里面就有7个人准备在老家上月,老家基本没有人了,年轻人都跑到城里买房了,平时都给孩子...

  • Perl基本变量及语法练习

    1. 半径为12.5时,圆的周长应该是多少? 2. 修改上题,提示用户键入半径,求出圆的周长。 3. 修改上题,当...

  • 改上班时间

    从今天起,就是八点半上班了。今天第一天适应,不出所料,迟到了。 下班时间一到,就立即下班有人了。很开心呀。终于有一...

  • 无标题文章

    ## 简单图形打印 ''' ****** ''' print("* "*5) ## 利用for 循环更改上面的案...

  • react+webpack+react-router+redux

    (6)react a. >npm install --save react react-dom使用react修改上...

  • 小白学opengl 第三课

    第三课:上色 修改上节课的颜色值 运行

网友评论

    本文标题:改上下文-js-v1.0.0

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