普通函式的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原...