this指向是js中的要点,要掌握好。一句话,函数执行时,this指向调用者,若没有调用者,具有全局性,指向window
this一般分为如下情况:
1 obj.fn() 调用时 指向obj 例如
var obj = {
name:"Mike",
sayName : function(){
alert(this.name)
}
}
obj.sayName(); this指向调用者obj
像document.getElementById("tel"),该方法的实现中利用了this(指向document),该方法是在document上找id等于tel的元素。
如果采取 var getId = document.getElementById;
getId("tel")
此时的this会指向window,不是指向document,然鹅在window上是不能用改取id的方式的(window是要把tel当做变量的window.tel)。
2 构造函数的this
如下 function Animal(name){
this.name = name;
} //this 是 new Animal构造函数的时候,指向构造出来的实例。
Animal.prototype.bite = function(){
alert(this.name);
}
var cat = new Animal("cat")
cat.bite(); 指向调用者cat
3
var demo = document.getElementById("demo");
demo.onclick = function(){
alert(this.id);
}
实际情况是点击demo的时候,触发了demo的click事件执行即(demo.click()) ,很显然,this指向demo
可以发现,1 ,2, 3 实际是一类情况
4
var demo = document.getElementById("demo");
demo.onclick = function(){
alert(this.id); // this 指向demo
var fn = function(){
alert(this.id); // 指向window
}
fn();
}
此示例中普通函数fn(没有调用者的函数)具有全局性,执行时this指向window