C開發實戰-深入理解指標
阿新 • • 發佈:2020-11-27
經常在程式碼中使用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'