this

作者: Duobe | 来源:发表于2019-03-30 16:10 被阅读0次

    In the browser

    > this === window // => true
    
    > "use strict";
      this === window // => true
    

    In node

    a. 命令行

    > node // => 进入node
    > this === global   // => true
    

    b. node执行以下文件node index.js

    // index.js
    console.log(this === global) // => false
    console.log(this === module.exports) // => true
    

    c. in function call

    function func () { 
      console.log(this === global) // => true
    }
    
    func()
    
    "use strict"; 
    function func () { 
      console.log(this === undefined) // => true
    }
    
    func()
    
    function func () { 
      "use strict"; 
      console.log(this === undefined) // => true
    }
    
    func()
    

    e. in constructor call

    function Person (firstName, lastName) { 
      this.firstName = firstName;
      this.lastName = lastName;
    }
    
    const person = Person("Jane", "Doe")
    
    console.log(person) // => undefined
    
    function Person (firstName, lastName) { 
      this.firstName = firstName;
      this.lastName = lastName;
    }
    
    const person = Person("Jane", "Doe")
    
    console.log(person) // => undefined
    
    console.log(global.firstName) // => Jane
    console.log(global.lastName) // => Doe
    
    // output: 
    // this.firstName = firstName;
    //                ^
    //
    // TypeError: Cannot set property 'firstName' of undefined ...
    "use strict";
    function Person (firstName, lastName) { 
      this.firstName = firstName;
      this.lastName = lastName;
    }
    
    const person = Person("Jane", "Doe")
    
    console.log(person) 
    
    console.log(global.firstName)
    console.log(global.lastName)
    
    "use strict";
    function Person (firstName, lastName) { 
      this.firstName = firstName;
      this.lastName = lastName;
    }
    
    const person = new Person("Jane", "Doe")
    
    console.log(person) // => Person { firstName: 'Jane', lastName: 'Doe' }
    
    console.log(global.firstName) // => undefined
    console.log(global.lastName) // => undefined
    

    more

    相关文章

      网友评论

          本文标题:this

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