(1)作为函数
在ECMAScript3和ECMAScript5中,调用上下文(this)是全局对象。在严格模式中,调用上下文是undefined
(2)作为方法
此时方法的上下文为该函数对象
(3)作为构造函数
构造函数初始化新创建的对象,并将这个对象作为其调用上下文,并用this引用这个新创建的对象。
new o.m()中的this指向的是新创建的对象,而不是m。
构造函数中的return语句没有返回值或者返回一个原始值,则忽略这个返回值,同时使用新对象作为调用结果
var Create = function(book){
this.book = book;
//return ; 还是返回新创建的对象
//return 1; 还是返回新创建的对象
//return [1]; 此时返回[1]
}
(4)通过它们的apply(),call()间接调用
注:作为嵌套的函数不会从调用它的函数中继承this。如果嵌套函数作为方法调用,this指向调用它的对象,否则this指向window或undfined。
var o = {
m: function(){
var self = this;
console.log(this === o); //true
f();
function f() {
console.log(this === o); //false
console.log(self === o); //true
}
};
来源:https://www.cnblogs.com/wuzy/archive/2013/05/23/3094620.html