1.js中的this最终指向的是那个调用它的函数[this:谁调用它就指向谁]
首先看下接下来的例子:
function lpy(){
var men = "leon";
console.log(this.men);
console.log(this);
}
lpy();
按照上面我们说的那样,this的最终指向的是调用它的对象,这里的函数lpy实际上是最终指向的window,而window里面是没有men的,所以第一个是undefined,第二个则是window。
2.如图:
var set ={
'men' : "leon",
fn:function(){
console.log(this.men)//leon
}
}
set.fn();
说明:这里的this指向的是对象set,因为你调用这个fn是通过set.fn()执行的。所以我们可以说明一点,this的指向在对象创建的时候是决定不了的,在调用的时候才能够决定,谁调用就指向谁。
3.This在找到一个变量的同时就不会往下找 如下:
//例子:
var name="The window";
var object={
name:"My object",
NameFunc:function(){ //递归
return function(){
return this.name;
}
}
}
alert(object.NameFunc()());
4.这里的函数是由最外层的cou点出来的,但是this和上面一样并没有执行它,而是最终指向的po;所以我们可以推翻一开始说的那句话,并且总结如下
如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window
var cou = {
num:99,
po:{
num:100,
fn:function(){
console.log(this.num);//100
}
}
}
cou.po.fn();
还有一些补充:
1.如果一个函数中有this,这个函数有被上一级的对象所调用,this指向的是就是它上一级的对象。 2.如果一个函数中有this,这个函数包含多个对象,尽管这个函数是被最外层的对象所调用,this也只是指向的它上一级的元素。