函式中的this指向

2021-10-08 03:39:58 字數 1795 閱讀 3231

普通函式的this : this就是誰呼叫 this就指向誰 this是在呼叫的時候確定的

function f1()

f1(); //window

物件裡面的方法,它裡面的this指向當前這個物件

var obj = 

}var fn = obj.print;

//var fn = obj.print();//undefuned

//fn(); //this 指向 window // 1111111 window

obj.print = f1;

obj.f2(); // this 指向 obj //

特殊的 :定時器 this 在 普通函式中(包括物件中的this) 一定指向 window

settimeout(f1,100);  //window

settimeout(obj.print,100); //window

settimeout(obj.print(),100); // 定時器裡面的引數1是obj.print()的返回值undefined 和定時器的this指向沒有任何關係

//只是把obj.print()呼叫了一遍 相當於 列印的this 也是 指向 obj

var res = obj.print(); //this 指向 obj

settimeout(res,100);

var name = "我在window裡面";

var obj1 = ,1000)

}}obj1.fn(); //this 指向 obj //

//"我在window裡面" "我是obj1裡面的" 定時器裡面列印內容 定時器裡面的this在普通函式中一定指向window

在es6 箭頭函式裡面的this是繼承自父級執行上下文中的this

箭頭函式沒有自己的this 它的this是從父級繼承而來的 在宣告的時候就已經確定了

var name = "我在window裡面";

var obj1 = ,1000);

}}obj1.fn();

var name = "我在window裡面";

var obj1 = ,1000);

}}obj1.fn();

function student(name,age)
1.把建構函式當成普通函式呼叫 this指向和普通函式一樣

student("張三",18); //列印 window
2.正常使用 this指向新建立的物件

var s1 = new student("張三",18); //列印 student
3.當作為建構函式時 返回值預設是new關鍵字建立的例項化物件 但是 如果手動新增了返回值 那麼 如果是基本資料型別 就不會影響 如果是複雜資料型別 那麼就會覆蓋掉預設的返回值

function student(name,age)

// return

return [12,13,15]

}var s1 = new student("lili",16);

console.log(s1); //[12, 13, 15]

console.log(s1.age); //undefined

普通函式 : this是在呼叫的時候確定 誰呼叫 this就指向誰

箭頭函式 :this是在宣告的時候就已經確定 而且不會改變 this是繼承自父級執行上下文的this

函式中this的指向

this是什麼?如何確定this的值?function person color this setcolor function value person red this是誰?這裡是執行person方法,只會執行1,this列印window var p newperson yelloe this是誰...

箭頭函式中this的指向

箭頭函式中this的指向 在箭頭函式中沒有this,箭頭函式中的this是它捕獲過來的,注意 1.箭頭函式中的this一旦捕獲將無法在改變 2.箭頭函式是在它被宣告時開始捕獲的 3.什麼是宣告時呢?就是箭頭函式被呼叫時 4.捕獲的是離它最近的父級的this的指向 舉個栗子 var a 測試 let ...

箭頭函式中的this指向

let a a.bar undefinedbar函式中的this指向父作用域,而a物件沒有作用域,因此this不是a,列印結果為undefined function a a.prototype.bar console.log this.foo let a new a a.bar undefined原...