写在最前面
this
- 函数预编译过程 this --> window
- 全局作用域里 this --> window
- call/apply 可以改变函数运行时this指向
- obj.function();function()里面的this指向obj
函数预编译过程 this --> window
function test(c){
var a = 123;
function b(){};
}
test();
AO{
arguments:[1];
this : window;
c : 1,
a : 123;
b : function(){};
}
new test();
obj.function();function()里面的this指向obj
谁调用this 就会指向这个函数
var name = "222";
var a = {
name : "111",
say : function(){
console.log(this.name)
}
}
var fun = a.say;
fun();//在全局下执行 打印222
a.say();//在a调用say this指向a 打印111
var b = {
name : "333",
say : function(fun){
fun();
}
}
b.say(a.say);//因为还是没有人调用fun(),所以还是在全局下调用的fun();所以打印的是222
b.say = a.say;
b.say();//可以看到的是b.say的属性值换成了a.say也就是fun(),打印的是333