1.函数预编译过程 this --> window
2.全局作用域里 this --> window
3.call/apply 可以改变函数运行时this指向
4.obj.func(); func() 里面的 this 指向obj
1.函数预编译过程 this --> window
function test() {
console.log(this);
}
test();
2.全局作用域里 this --> window
console.log(this);
3.call/apply 可以改变函数运行时this指向
var me = {
name : 12
};
function test() {
var name = 234;
console.log(this.name);
}
test.call(me);//12
4.obj.func(); func() 里面的 this 指向obj
var obj = {
say : function () {
console.log(this.name);
},
name : 'a'
}
obj.say();//a
例子
var name = '222';
var a = {
name : '111',
say : function () {
console.log(this.name);
}
}
var fun = a.say;
fun();//222
a.say();//111
var b = {
name : '333',
say : function (fun) {
fun();
}
}
b.say(a.say);//222
b.say = a.say;
b.say();//333
b.say(a.say);//222在于,首先var fun = a.say;就是把a.say方法复制一份到fun里,但在b.say(fun)时,fun() 是单执行的,没有对象去调用fun,所以此时fun里的this指向的是window。