让我们记住一个词:它总是指向函数运行的对象,而不是创建函数时创建的对象…
本文将分为三个案例来分析这个对象到底在哪里。
普通函数中的这个
不管这个位置在哪里,第一件要做的事情是在函数运行时找到函数的位置。
复制代码代码如下所示:
1 var;
2功能getName(){
3 var;
4回this.name;
5 };
6警报(getName());

当这出现在全球环境的函数的函数GetName getName,此时的位置是在位置
复制代码代码如下所示:
警报(getName());

显然,这同对象的函数是全局对象,即窗口,所以这会躲在窗口。在这一点上,这个点的窗口对象,并返回的this.name getName实际上是window.name,所以提醒了世界!
然后,当它不出现在全局环境的函数中时,当它出现在本地环境的函数中时,它将被困在什么地方呢
复制代码代码如下所示:
1 var;
2无功twobin = {
3名称:本地
4同:功能(){
5回this.name;
6 }
7 };
8警报(twobin.getname());

该功能不在全球环境中,但在twobin环境。无论你在这,一定要找到位置的功能函数时运行,功能同此时的位置
复制代码代码如下所示:
警报(twobin.getname());

显然,getName目标函数twobin,所以这会躲在twobin,它指向一个对象的twobin getName this.name返回twobin.name,所以警惕的地方!
这在闭包中
关闭也是一个令人不安的因素。这篇文章谈得不多。简言之,所谓闭包就是在函数内部创建另一个函数,内部函数访问外部变量。
浪子和痞子关闭混合在一起,将永无宁日。啊啊啊啊啊!
复制代码代码如下所示:
1 var;
2无功twobin = {
3名称:本地
4同:功能(){
5返回函数(){
6回this.name;
7 };
8 }
9 };
10警报(twobin.getname()());

当时,这显然是一个两难的境地,这是在同功能的匿名函数和匿名函数调用的变量名,所以它构成了一个闭合的,这是,这是关闭的。
无论你在这,一定要找到位置的功能函数时运行。它不是由函数getName此时的位置来判断,而是基于一个匿名函数运行时的位置。
复制代码代码如下所示:
函数(){
返回this.name;
};

显然,在匿名函数的窗口对象,所以这会躲在窗口,于是匿名函数返回this.name是window.name警报,因此全球!
那么,你如何让这个在twobin关闭
复制代码代码如下所示:
全局;
无功twobin = {
名称:本地
getName:函数(){
var =;
返回函数(){
返回that.name;
};
}
};
警报(twobin.getname()());

的,这是当时的getName函数在运行位置的getName函数定义
警报(twobin.getname());
这一点对twobin对象,所以也分到twobin对象。返回关闭匿名功能that.name,然后返回that.name实际上是twobin.name,所以它可以提醒出来的部分!
这个调用和应用
可以用Javascript管理的这个估计也是不调用和应用的。
调用和应用就像是父母的,这是生活在这和听!
复制代码代码如下所示:
全局;
无功twobin = {
名称:本地
};
功能getName(){
警报(这个名字);
}
getName(twobin);
getname.call(twobin);

这是在函数调用getName。无论你在这,一定要找到位置的功能函数时运行,功能同此时的位置
getName(twobin);
显然,getName目标函数是窗口,所以这会躲在窗口,它指向一个窗口对象的this.name window.name getName返回,所以全球警报!
然后,调用和应用出现了,因为这必须听从他们的命令!
getname.call(twobin);
其中,称这是在twobin遮挡指定,因此被迫定居在twobin,那么这一点twobin,this.name是twobin.name,所以警惕的地方!
一个小的总结
这一点:浪子总是指向函数操作,函数是在对象不在匿名函数中创建的;如果在任何对象中,这是指一个窗口对象;如果它是调用或应用,它指定哪个对象是这个,指向对象!