this在使用時指向的理解

2021-10-20 01:34:13 字數 2173 閱讀 4872

先看導圖有大概的理解:

a.嚴格模式下this指向的undefined;

b.非嚴格模式(use strict)this指向window;

在函式中使用理解:

1)誰執行函式this就指向誰;

var obj = 

};obj.b();//10

== obj.b().call(obj) 指向的是呼叫的它的obj物件

var fn = obj.b;

fn(); // this指向window物件

2)函式在被直接呼叫的時候,this指向window

-this在call方法:平時執行函式只是省略了call,可以理解為  say(『here』) == say.call(window,'here');

圖二:

function say(content) come $`);    

};/**

*call執行步驟

*把第二個引數作為函式執行的引數傳入

*函式執行時的this執行第乙個引數

*呼叫函式的語法糖

*/say.call('i','here'); //hello word i come here

//正常呼叫的話,this指向到window的物件

say('here'); //hello word [object window] come here

3)匿名函式(iife)的this指向window物件;

圖三

(function (content))('here');

//2個其實是乙個意思,就是乙個簡寫了

(function (content)).call(window,'here');

4)函式作為new出來的新物件,this指向新物件

圖四

var a = function();

var b = new a(); // 列印 a的物件

b.a; //20

--總結常見面試題:

題一:

/***第乙個列印的20,因為是obj呼叫了函式,this的指向是obj(上面理解中第一點);第二個列印是10,屬於函式直接執行,物件會指向window(理解中的第二點)

*/var a = 10;

var obj =

fn();

}}obj.b(); // 20 10

題二:var a = 10;

var obj =

}obj.b(); // 20

var fn = obj.b;

fn(); //10 , 屬於直接呼叫,this指向window

var obj2 = ;

obj2.c(); //30 , 屬於obj2呼叫了,this就指向obj2了

題三:var title = 'hello';

var obj =

}var fn = obj.say;

fn(); // hello

obj.say();//hi

var obj2 =

}obj2.say(obj.say);//傳引數後,還是屬於直接呼叫 所以this指向的是window hello

obj2.say = obj.say;

obj2.say();

//obj的say方法賦值給了obj2,obj2就變成了下面

var obj2 =

}所以,obj2.say()呼叫就是 obj2.say().call(obj2) ,this指向了obj2

不在函式中使用,this指向了window物件

var a = 1;

var obj = ;

console.log(obj.b);//2

箭頭函式沒有this,預設指向定義它的時候的所在的物件

//全域性變數建立時,指向window

const obj1 = ()=>;

obj1();// window

//物件中建立時,指向當前物件

var obj2 = ;

fn();//aa

}};obj2.b();

MySQL的LOAD FILE方法在使用時的問題

mysql的load file方法在使用時的問題 在執行 update tables name set file path load file tmp aa.txt where file id 1 時file path的值一直為 null 無法把檔案匯入到資料庫裡面 後來試了無數次,偶然在資料庫服務...

this指向的簡單理解

this 本身含義 執行上下文 只能是物件 不是物件強行轉換成物件 this一般存在於函式中,表示當前函式的執行上下文,如果函式沒有被執行,那麼this沒有內容,只有函式在執行後this才有繫結。函式執行的位置 1 預設執行 自己執行自己 fn 預設情況下的隱式執行 this指向window 嚴格模...

this指向自己理解的

關於this,總結起來,主要有以下幾個途徑能夠被運用到。1 物件方法中呼叫this 如果函式被當中物件的乙個方法進行呼叫,則this值指向該物件。var person person.sayname this person,alert welcome alice 在這裡,函式的this指向該物件 即 ...