Javascript中两类this

在作为返回值的函数中this都会指向全局对象

1
2
3
4
5
6
7
8
9
10
11
var name = '全局name';
function getName(){
console.log(this.name);
return function(){
console.log(this.name);
}
}
var obj = {name:'obj-name',getName:getName};
getName()();
obj.getName()();
getName.call(obj)();

程序输出结果为:
hexo

作为函数参数的函数中的this同样指向全局对象

1
2
3
4
5
6
7
8
9
function getName1(){
console.log(this.name);
}
var obj1 = {name:'obj1-name',getName:function(func){console.log(this.name);func();}};
obj1.getName(getName1);

var obj2 = {name:'obj2-name',getName:function(){console.log(this.name)}};
var obj3 = {name:'obj3-name',getName:obj2.getName};
obj3.getName();

程序输出:
hexo