美文网首页
this 指针

this 指针

作者: my木子 | 来源:发表于2021-04-07 22:23 被阅读0次

默认绑定

  • 默认绑定 this 指向 window
  • 严格模式 this 指向 undefined
    var num = 1;
    function fun() {
      var num = 2;
      console.log(this.num);    // 1
    };
    fun();

隐式绑定

  • 谁调用 this 就指向谁
    var a = 1;
    var obj1 = {
      a: 2,
      fun: function () {
        console.log(this.a);    // 2
      }
    }
    obj1.fun();    // obj

    // -----------------------------
    var b = 1;
    var obj2 = {
      b: 2,
      fun: function () {
        console.log(this.b);    // 1
      }
    }
    var f = obj2.fun;
    f();    // window

硬绑定 call、apply、bind

    var obj = {
      num: 1,
      fun: function () {
        console.log(this.num);
      }
    }
    var obj1 = {
      num: 2
    }
    var obj2 = {
      num: 3
    }
    var obj3 = {
      num: 4
    }
    obj.fun();            // 1
    obj.fun.call(obj1);   // 2
    obj.fun.apply(obj2);  // 3
    obj.fun.bind(obj3)(); // 4

构造函数绑定

    function Fun(val) {
      this.num = val;
      this.getNumber = function () {
        console.log(this.num);    //  1
      };
    };

    var f = new Fun(1);
    f.getNumber();

箭头函数

  • 始终指向函数定义时的 this
var a = 0;
var obj1 = {
    a: 1,
    getNumber: function () {
        var fn = function () {
           console.log(this.a);  // 0
        };
        return fn();
    }
};

var obj2 = {
    a: 2,
    getNumber: function () {
        var fn = () => {
            console.log(this.a); // 2
        }
        return fn();
    }
};
obj1.getNumber(); // window
obj2.getNumber();

知识点补充

  • 如果返回值是一个对象,那么 this 指向返回的对象
  • 如果返回值不是一个对象,那么 this 指向函数的实例
  • null 也是对象,但是在这里this 指向函数的实例
    function Fun1() {
      this.num = 1;
      return 2
    }
    var f1 = new Fun1();
    console.log(f1.num); // 1

    // ---------------------------------
    function Fun2() {
      this.num = 1;
      return {
        num: 2
      };
    }
    var f2 = new Fun2();
    console.log(f2.num); // 2

    // ---------------------------------
    function Fun() {
      this.num = 1;
      return null;
    }
    var f = new Fun();
    console.log(f.num); // 1

相关文章

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针

    普通指针指针的指针 数组指针 函数指针

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C 语言指针

    指针类型:指针的读取长度,指针的读取方向(大小端) 空指针,无类型指针,野指针 常量指针,指向常量的指针 http...

  • 二、C语言基础

    A、指针 指针的概念:指针变量 和 指针 的区别 ?答:指针变量是指针的标记,也可以通过指针变量的标记操作指针内存...

  • 王道程序员求职宝典(十一)指针与引用,树

    指针与引用 指针声明typedef别名类型检查void*指针指向指针的指针函数指针typedef简化函数指针定义初...

  • NDK02

    指针 指针概念 1 .指针变量和指针的区别?答: 指针变量是定义指针的标记,指针就是指向的内存地址。2 .函数指针...

  • 12 C指针

    1、指针定义 2、指针进阶 3、指针使用 4、多级指针 4、指针和数组 5、指针和字符串 6、高级指针之和指向函数的指针

网友评论

      本文标题:this 指针

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