美文网首页
【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指向

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