this的使用(js的问题)

this指向

指代当前调用的这个对象

4中绑定(优先级从低到高):

  • 默认绑定
  • 隐式绑定
  • 显示绑定
  • new绑定
var person = {
  name: 'Tom',
  age: 23,
  showName: function () {
    // this->person
    console.log(this.name); // Tom
  },
  showAge: function () {
    // 局部函数
    function _age(){
      // this->window
      console.log(this.age); // undefined
    }
    _age();
    // this->person
    console.log(this.age); // 23
  },
};

person.showName()
person.showAge()

可以先保存this

let that = this;

改变this指向

call/apply/bind

var name = 'Tom'

var person = {
  name: 'Jack',
  showName: function(){
    console.log(this.name);
  }
}


person.showName(); // Jack

// this->window
var show = person.showName;
show(); // Tom

var fn = person.showName.bind(person);
fn(); // Jack

实现一个bind方法

Function.prototype.bind = function(obj){
  var that = this;
  return function(){
    that.apply(obj)
  }
}


// 验证
var name = 'Tom'

var person = {
  name: 'Jack',
  showName: function(){
    console.log(this.name);
  }
}

var fn = person.showName.bind(person);
fn(); // Jack

相关推荐

  1. this使用js问题

    2024-01-06 07:42:05       40 阅读
  2. vuethis指向问题

    2024-01-06 07:42:05       30 阅读
  3. 使用History和location(js问题

    2024-01-06 07:42:05       32 阅读
  4. 箭头函数this指向问题

    2024-01-06 07:42:05       53 阅读
  5. 在循环内错误使用函数定义(js问题

    2024-01-06 07:42:05       38 阅读
  6. 函数节流(js问题

    2024-01-06 07:42:05       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 07:42:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 07:42:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 07:42:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 07:42:05       18 阅读

热门阅读

  1. LeetCode每日一题 | 1944. 队列中可以看到的人数

    2024-01-06 07:42:05       41 阅读
  2. 1.2 C#基础

    2024-01-06 07:42:05       38 阅读
  3. PHP篇——html+php实现表单提交的一个简单例子

    2024-01-06 07:42:05       41 阅读
  4. Spring Boot 和 Spring Framework 的区别

    2024-01-06 07:42:05       48 阅读
  5. Spring Boot 生产就绪中文文档-下

    2024-01-06 07:42:05       30 阅读
  6. TensorFlow的详细介绍

    2024-01-06 07:42:05       33 阅读
  7. Android设备sdcard/tf卡不识别在电脑上可以

    2024-01-06 07:42:05       39 阅读
  8. 记一次 easyswoole 热重载失效复盘 grpc扩展惹的祸

    2024-01-06 07:42:05       48 阅读
  9. 5.3 Android BCC环境搭建(eadb版 下)

    2024-01-06 07:42:05       35 阅读
  10. 新手深入PyTorch中RNN、LSTM和GRU使用和理解

    2024-01-06 07:42:05       30 阅读