【Node.js随笔】this指向

2019-12-08  本文已影响0人  杰克有茶

记录一下,以后复习用

例1:

class Test {

    constructor() {

    }

    Print() {

        console.log(this); // this 指向实例

    }

}

var test = new Test();

test.Print();

控制台输出:Test{},说明 this 指向的是实例

例2:

class Test {

    constructor() {


    }

    static Print() {

        console.log(this); // this 指向类

    }

}

Test.Print();

控制台输出:[Function: Test],说明 this 指向的是类

例3:

console.log(this);

控制台输出:{},说明 this 指向空对象

例4:

class Test {

    constructor() {

    }

    Print(callback) {

        callback("Yo~");

    }

}

var test = new Test();

test.Print(function(data) {

    console.log(this); // this 指向 global
    
});

控制台输出:

Object [global] {
  global: [Circular],
  clearInterval: [Function: clearInterval],
  clearTimeout: [Function: clearTimeout],
  setInterval: [Function: setInterval],
  setTimeout: [Function: setTimeout] { [Symbol(util.promisify.custom)]: [Function] },
  queueMicrotask: [Function: queueMicrotask],
  clearImmediate: [Function: clearImmediate],
  setImmediate: [Function: setImmediate] {
    [Symbol(util.promisify.custom)]: [Function]
  }
}

说明 this 指向 global

例5:

class Test {

    constructor() {

    }

    Print(callback) {

        callback("Yo~");

    }

}

var test = new Test();

test.Print((data) => {

    console.log(this); // this 指向空对象
    
});

控制台输出:{},说明 this 指向空对象

例6:

class Test {

    constructor() {

        this.Print(function(data) {

            console.log(this); // this 指向的对象不存在

        });

    }

    Print(callback) {

        callback("Yo~");

    }

}

var test = new Test();

控制台输出:undefined,说明 this 指向的对象不存在。

例7:

class Test {

    constructor() {

        this.Print((data) => {

            console.log(this); // this 指向实例

        });

    }

    Print(callback) {

        callback("Yo~");

    }

}

var test = new Test();

控制台输出:Test {},说明 this 指向实例,lambda 表达式内的 this 指向上一级

上一篇 下一篇

猜你喜欢

热点阅读