1. 程式人生 > 實用技巧 >C開發實戰-深入理解指標

C開發實戰-深入理解指標

經常在程式碼中使用this,但是沒有總結過this指向的問題。

  var name = "Jake";
  function testThis() {
    this.name = 'jakezhang';
    this.sayName = function () {
      return this.name;
    }
  }
console.log('第一個this===', this); // this指向window console.log(this.name); // Jake new testThis(); console.log('第二個this', this); console.log(this.name); // Jake var result = new testThis(); // 誰被new,指向誰 console.log('第三個this=', this); // this指向建構函式 console.log(result.name); // jakezhang console.log(result.sayName()); // jakezhang testThis();
 console.log('第四個this=', this); console.log(this.name); // jakezhang

解析:

1.第一個this:在全域性範圍內,this指向window物件;

 所以this.name = 'Jake';指向最外層的name

2.第二個this:有new關鍵字,但是我認為相當於是window來進行呼叫的,也就是誰被new,指向誰;此時也就是指向window

 所以this.name = 'Jake'

3.第三個this:相當於生成一個建構函式,並賦值給result,此時還是誰被new,指向誰。this指向testThis();

 result.name = 'jakezhang';

4.第四個this:呼叫testThis()函式,this指向函式內部

 this.name = 'jakezhang'