JavaScript 中的 this
- content
{:toc}
本文为慕课网 JavaScript深入浅出 JavaScript 中的 this笔记。
全局的 this
全局 this 一般指向全局对象,浏览器中的全局对象就是 window
。
例如:
1 | console.log(this.document === document); //true |
一般函数的 this
1 | function f1 () { |
可以看到一般函数的 this 也指向 window,在 nodeJS 中为 global object
1 | function f2 () { |
严格模式中,函数的 this 为 undefined
作为对象方法的函数的 this
1 | var o = { |
上述代码通过字面量创建对象 o。
f 为对象 o 的方法。这个方法的 this 指向这个对象,在这里即对象 o。
1 | var o = { |
上面的代码,创建了对象 o,但是没有给对象 o,添加方法。而是通过 o.f = independent
临时添加了方法属性。这样这个方法中的 this 同样也指向这个对象 o。
对象原型链上的 this
1 | var o = { |
通过 var p = Object.create(o)
创建的对象,p 是基于原型 o 创建出的对象。
p 的原型是 o,调用 f() 的时候是调用了 o 上的方法 f(),这里面的 this 是可以指向当前对象的,即对象 p。
get/set 方法与 this
1 | function modulus() { |
get/set 方法中的 this 也会指向 get/set 方法所在的对象的。
构造器中的 this
1 | function MyClass() { |
new MyClass() 的时候,MyClass()中的 this 会指向一个空对象,这个对象的原型会指向 MyClass.prototype。MyClass()没有返回值或者返回为基本类型时,默认将 this 返回。
1 | function C2() { |
因为返回了对象,将这个对象作为返回值
call/apply 方法与 this
1 | function add(c, d) { |
bind 方法与 this
1 | function f() { |
绑定之后再调用时,仍然会按绑定时的内容走,所以 o.g() 结果是 test
- 本文标题:JavaScript 中的 this
- 创建时间:2015-06-12 14:06:05
- 本文链接:posts/1a79.html
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!