this

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容