<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
<script type="text/javascript" charset="utf-8">
(function(){
// this
var test=function(){
//this
return function(){
//this
};
}
(function(){
//this
var a={
p1:function(){
//this
}
};
})();
})();
</script>
</body>
</html>
回答
David Dorward已經提到過關於JavaScript的內容:The Good Parts by Douglas Crockford。
從這一優良書的第4.3節:
調用一個函數掛起 執行當前函數, 傳遞控制和參數到 新的功能。除了聲明的參數 之外,每個函數 還接收兩個附加參數: this和arguments。此參數 在面向對象 編程中非常重要,其值爲 ,由調用模式確定。 JavaScript中有四種調用模式 :方法調用 模式,函數調用 模式,構造函數調用 模式和應用調用 模式。 初始化的獎勵參數 的模式不同。
Crockford的繼續的「這個」在每個這些模式,如下所示來說明綁定:
方法調用圖形:當一個函數被存儲爲對象的屬性,我們稱它是一種方法。當一個方法被調用時,這個綁定到該對象。
函數調用模式:當使用此模式調用函數時,該函數被綁定到全局對象。這是該語言設計中的一個錯誤。
構造函數調用模式:如果一個函數被調用,有新的前綴,那麼一個新的對象將與一個隱藏的鏈接功能的原型成員的價值創造,這將綁定到新對象。
應用調用模式: apply方法讓我們構造一個用於調用函數的參數數組。它也讓我們選擇這個價值。 apply方法有兩個參數。第一個是應該綁定到這個的價值。第二個是一組參數。
比this
是評論
在作用域鏈意義上,它會從this
在底部功能將所有的方式回到全球this
。
例如這
p1:function(){
//this
}
那麼這個上面它
(function(){
//this
var a={
p1:function()
然後它上面
(function(){
// this
var test=function(){
有尼古拉斯Zakas一個良好的演示文稿在雅虎this
它在http://www.youtube.com/watch?v=mHtdZgou0qU
this
的含義取決於包含它的函數如何被調用,而不是它是如何構造的。
在JavaScript: The Good Parts中有一個很好的解釋。
簡短的說法是,當您調用函數(m)作爲對象(o)的方法時,那麼this
是o
。
var o = {
m: function() {
return this;
}
}
var foo = {
bar: o.m;
}
o === o.m();
foo === foo.bar();
最好看看javascript關閉,瞭解範圍和這個指針分配。 「這個」甚至在面向對象編程之前就已經出現,但對於它來說絕對是必不可少的。
http://jibbering.com/faq/notes/closures/
這在很大程度上取決於範圍鏈的作用,標識符 分辨率等屬性名稱的對象上的分辨率。
封閉的簡單解釋是ECMAScript允許內部的 函數;函數定義和函數表達式,其中 在其他函數的函數內。
與 聲明的局部變量變量實例化期間被初始分配未定義值 對應的可變對象上創建的特性,局部 變量的實際初始化並不發生,直到的評價在執行功能體代碼期間對應的 賦值表達式。
這是一個事實,即激活對象,以其參數 屬性,和可變對象,具有與功能的局部變量對應 命名屬性,是同一個對象,其允許 標識符參數被處理,就好像這是一個函數局部變量 。
最後,分配一個值用於此關鍵字。如果 賦值指向一個對象,那麼屬性訪問器將 作爲該對象的該關鍵字引用屬性的前綴。如果 值(內部)爲空,則此關鍵字將引用 到全局對象。
全局執行上下文與 獲得一些稍微不同的處理,它沒有參數,因此它不需要定義的激活 對象來引用它們。全局執行上下文確實需要一個 作用域,其作用域鏈恰好由一個對象組成,全局對象爲 。全局執行上下文確實通過變量 實例化,其內部函數是構成大量JavaScript代碼的正常頂層函數 聲明。全局對象 用作變量對象,這就是全局聲明的 函數成爲全局對象的屬性的原因。正如全球 所聲明的變量。
全局執行上下文還使用對此對象的全局對象 的引用。 禮貌http://jibbering.com/faq/notes/closures/ 章:標識符解析,執行上下文和範圍鏈
- 1. Python3:這個「%」在這段代碼中意味着什麼?
- 2. 在這段JavaScript代碼中,'&&'表達意味着什麼?
- 3. 這是什麼混淆JavaScript代碼段意味着/做什麼?
- 4. EventListenerList中的這段代碼在Java Swing中意味着什麼?
- 5. 這段代碼在Visual Basic中意味着什麼?
- 6. 這段代碼在scala中意味着什麼?
- 7. 這段代碼在簡單英語中意味着什麼?
- 8. 這段代碼在Meteor中意味着什麼?
- 9. 「a。」是什麼在JavaScript的這段代碼中意味着什麼?
- 10. 這段代碼片段究竟意味着什麼?
- 11. 這個'&'在Ruby中意味着什麼?
- 12. 星星在這個haskell代碼中意味着什麼?
- 13. 函數(i)在這個jQuery代碼中意味着什麼?
- 14. 這些字段意味着什麼?
- 15. PREEMPTIVE_XE_DISPATCHER這意味着什麼?
- 16. * | *這意味着什麼CSS?
- 17. 這是&意味着什麼?
- 18. $這意味着什麼PHP?
- 19. 關於這段代碼意味着什麼的C#問題
- 20. Javascript「this.socket.of ...」這行代碼意味着什麼
- 21. 這個目標中的「at sign」意味着什麼C代碼
- 22. 什麼是「這」意味着這些代碼之間的區別
- 23. 這在C中意味着什麼?
- 24. 在gdb中這意味着什麼?
- 25. 這在PowerPC中意味着什麼?
- 26. 這在AS3中意味着什麼?
- 27. 在MongoDB中這意味着什麼?
- 28. <?=這在C++中意味着什麼?
- 29. 自我.write在這樣的代碼中意味着什麼?
- 30. 這行代碼在C++中意味着什麼?
請注意,使用Javascript包含可能比廣告宣傳不太簡單。條款和條件適用。優惠在加拿大無效。 – Greg 2009-07-13 10:27:16
只是copy'n粘貼一些代碼不構成一個很好的問題。 -1 – Boldewyn 2009-07-13 10:40:05