// 1
console.log(this=== window);//true//2var name ="Jake";
console.log(this.name );// "Jake"
console.log(window.name );// "Jake"//3
age =23;functiontestThis(){
age =18;}
console.log(this.age );// 23testThis();
console.log(this.age );// 18
2:在函数中,this永远指向最后调用它的那个对象。
var name ="windowsName";functionsayName(){var name ="Jake";
console.log(this.name);// windowsName
console.log(this);// Window}sayName();
console.log(this)// Window
3:在构造函数中,this指向new出来的那个新对象。
var a =newFoo("zhang","jake");newFoo{var obj ={};
obj.__proto__ = Foo.prototype;var result = Foo.call(obj,"zhang","jake");returntypeof result ==='obj'? result : obj;}
4:对于call(),apply(),bind()中的this是被强行绑定到指定的对象上。
var name ='zjk';functionfun(){
console.log(this.name);}var obj={
name:'jake'};fun();// zjk
fun.call(obj);//Jake
let name ="zjk";let first ={
name :"Jake",
sayName:function(){
console.log(this.name)},
func:function(){setTimeout(()=>{this.sayName()},100);}};.func()// Jake