this指向js里面比较重要的内容下面介绍一下。
this指向可以分以下四种情况:
1、函数预编译过程 this ---> window
function Num(n){
var a = 12;
var b = function(){};
}
Num(3);
// 此时函数会产生预编译对象AO
// AO{
// arguments:[1];
// this : window,
// n : 3,
// a : 12,
// b : function(){},
// }
// 但是上面Num函数如果new一个构造函数的话就会在函数里面this指向函数的原型
function Num(n){
// var this = Object.create(Num.prototype);
// {
// __proto__: Num.proto
// }
var a = 12;
var b = function(){};
}
new Num();
// 测试一下
function test(){
console.log(this);
}
test();
//打印出window
2、全局作用域里 this ---> window
3、call/apply 可以改变函数运行时this指向 点击了解call/ apply
4、obj.func(); func()里面的this指向obj 谁调用的, this就指向谁
var obj = {
a : function(){
console.log(this.name);
},
name : 'abc'
}
obj.a();
// 谁调用的这个方法,this就指向谁