前言
话不多说,直接上代码剖析…
场景1__全局环境中 this指向 全局对象
this.a = 10;
alert(a); // 10
b = 20;
alert(this.b); // 20
场景2__对象 内部函数的 this指向 调用函数的 当前对象
var a = 10;
var bar = {
a:20,
test: function(){
alert(this.a);
}
}
bar.test();
场景3__全局环境 函数的this 指向 全局对象
var a = 10;
function fool() {
alert(this.a);
}
fool();
场景4__匿名 函数中的this 指向 全局对象
var a = 10;
var fool = {
a: 20,
fn:(function(){
alert(this.a);
})()
}
fool.fn;
场景5__setInterval 和 setTimeout 定时器中的this 指向 全局对象
var a = 10;
var Time = setInterval(function(){
var a = 20;
alert(this.a);
clearInterval(Time);
},5000)
场景6__构造函数中的 this指向 构造出的新对象
function Person(name, age) {
this.name = name;
this.age = age;
this.sayName = function() {
alert(this.name);
}
}
var per = new Person("lily",'20');
per.sayName();