this
指針的範圍或可見性被稱爲w.r.t一個div僅限於它所針對的函數,而不是它的NESTED函數。爲什麼JavaScript中的「this」指針範圍受到限制?
不過,所有函數的局部變量的嵌套函數是可見的 - 爲什麼會發生這種情況?..通過調用帶有<function name>(this)
上一個div功能得到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
後返回 - 兩者不關閉的功能? (如果是這樣,這是父函數中的變量應該可以在嵌套函數中看到,不是嗎?)
這就是我在'tst2'正在做..我知道,當你把它複製ü可以訪問它,我的觀點是,爲什麼是'this'從父沒有嵌套函數訪問時態的父母是應該保存嵌套訪問返回功能,即使以後。作爲從父功能(我想包括'this')的__references__應該在嵌套.. – 2012-01-28 22:10:39
@VivekChandra它的訪問因爲每個函數都有'this'因此你總是問'this'當前功能的,而不是保存一個。任何地方都一樣。如果外部函數和內部函數具有相同名稱的本地文件,則永遠不能訪問外部文件,而只能訪問內部文件。 – JaredPar 2012-01-28 22:12:29
你以前的評論後半部分清除了我的疑惑..謝謝.. – 2012-01-28 22:18:57