Blog icon indicating copy to clipboard operation
Blog copied to clipboard

几行代码理解this

Open YutHelloWorld opened this issue 8 years ago • 3 comments

  1. 构造函数和this
function F() {
  this.a = 'a'
  this.c = function () {
    console.log(this)
  }
}
var f = new F()
f.c() 

f.c()输出的this指向构造器F的实例f, f是一个对象,即:{a: "a", c: ƒ()}。那么下面几个示例就好理解了。

function F() {
  this.a = 'a'
  this.c = function () {
    console.log(this.a)
  }
}

var f = new F()
var c = f.c
f.c()  // a
c()  // undefined,this指向window
function F() {
  this.a = 'a'
  // 使用箭头函数绑定this
  this.c =  () => {
    console.log(this.a)
  }
}

var f = new F()
var c = f.c
f.c()  // a
c()  // a

YutHelloWorld avatar Nov 30 '17 01:11 YutHelloWorld

var foo = {
  bar: function () {
    alert(this);
  }
};
 
foo.bar(); 
(foo.bar)(); 
 
(foo.bar = foo.bar)(); 
(false || foo.bar)(); 
(foo.bar, foo.bar)(); 

补充几个加强理解😂

jawil avatar Nov 30 '17 01:11 jawil

你敢在业务里写后三种吗😏 @jawil

YutHelloWorld avatar Nov 30 '17 02:11 YutHelloWorld

业务是业务,学习是学习,学习深了对业务代码都一目了然😏

jawil avatar Nov 30 '17 03:11 jawil