美文网首页
【Node.js随笔】this指向

【Node.js随笔】this指向

作者: 杰克有茶 | 来源:发表于2019-12-08 21:28 被阅读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 指向上一级

相关文章

  • 【Node.js随笔】this指向

    记录一下,以后复习用 例1: 控制台输出:Test{},说明 this 指向的是实例 例2: 控制台输出:[Fun...

  • 静态服务器模块

    Node.js 中 __dirname 和 ./ 的区别 Node.js 中,__dirname 总是指向被执行 ...

  • Node.js 有什么弊端

    《深入浅出 Node.js》阅读随笔 此文为《为什么选择 Node.js》姊妹篇,简单聊一下 Node.js 的缺...

  • Node.js 有必要写测试用例吗?

    《深入浅出 Node.js》阅读随笔 先说结论:很有必要!不单是 Node.js,除非是作为体验或者 Demo 演...

  • 异步编程的困惑

    《深入浅出 Node.js》阅读随笔 众所周知,Node.js 虽然也有部分同步编程的方式,但主要还是以后异步编程...

  • 发布/订阅模式

    《深入浅出 Node.js》阅读随笔 Node.js 下使用发布/订阅的模式写程序,可以很优雅的解藕业务逻辑,尤其...

  • Node.js 中的单元测试

    《深入浅出 Node.js》阅读随笔 Node.js 中的单元测试与通常后端语言中单元测试大致相同,主要包含断言、...

  • Node.js 中的“过犹不及”

    《深入浅出 Node.js》阅读随笔 在使用 Node.js 时,有时会遇到由于其性能过高而导致系统无法正常处理的...

  • nodejs原生模块快速熟悉

    path __dirname Node.js 中,__dirname 总是指向被执行 js 文件的绝对路径,所以当...

  • 多异步之间的协作

    《深入浅出 Node.js》阅读随笔 Node.js 的中发布/订阅模式,一般用于解决一次发布对应多次订阅的情况。...

网友评论

      本文标题:【Node.js随笔】this指向

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