this的取值
在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了。因为this的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下文环境。
this的4种绑定规则
- 全局环境中,this默认绑定到window
- 函数独立调用时,this默认绑定到window
- 被嵌套的函数独立调用时,this默认绑定到window
- IIFE立即执行函数实际上是函数声明后直接调用执行
- 闭包(类似地,test()函数是独立调用,而不是方法调用,所以this默认绑定到window)
Prototype
JavaScript 中的对象有一个特殊的 [[Prototype]] 内置属性,其实就是对于其他对象的引用。几乎所有的对象在创建时 [[Prototype]] 属性都会被赋予一个非空的值。
“构造函数“
在 JavaScript 中对于“构造函数”最准确的解释是,所有带 new 的函数调用。函数不是构造函数,但是当且仅当使用 new 时,函数调用会变成“构造函数调用”。
- 例题:
1 | this.a = 20; |
- 分析图:



