调用w.r.t div的this
指针的范围或可见性仅限于其所针对的函数,而不限于其NESTED函数。
但是,该函数的所有局部变量在嵌套函数中都是可见的 - 为什么会发生这种情况?通过在div上使用this
调用函数来获取<function name>(this)
指针 - - 这并不意味着即使this
指向也是<function name>
简而言之,这是让我困惑的代码..
<html>
<script type="text/javascript" >
function tst1(){
setTimeout(
function (){
alert(this.id)
}, 2000)
}
function tst2(){
var elem = this
setTimeout(
function (){
alert(elem.id)
}, 2000)
}
</script>
<style type="text/css">
.test{
margin: 40px 100px;
background-color: green;
width: 200px;
line-height: 40px;
text-align: center;
height: 40px;
}
</style>
<div id="fooBar" class="test" onclick="tst1.call(this)"> Emily Rossum</div>
<div id="chickenRun" class="test" onclick="tst2.call(this)"> Emily Rossum</div>
</html>
在tst1 function
中this
变量为null
,但该函数的局部变量应在嵌套函数中可见,如tst2
所示。
我正在阅读闭包,因为稍后调用该函数 - 即使在返回setTimeout
和tst1
后通过tst2
- 这两个函数是否都关闭? (如果是这样,这是父函数中的变量应该在嵌套函数中可见,不应该吗?)
答案 0 :(得分:2)
javascript中的this
变量与其他变量不同,因为它始终特定于特定的函数调用。每个函数调用基本上只有一个this
,尽管它可能与外部函数中使用的this
相同,但它不一定。
如果要保留外部this
以在内部函数中使用,请将其保存到本地。
var outer = function () {
var self = this; // Save current 'this' in a local
var inner = function () {
self.name; // refers to the original outer 'this.name'
...
};
...
};