2016-04-27 17 views
-1

我正在閱讀tutorial中的AngularJS。我不知道他們爲什麼要聲明使用'this'關鍵字的新變量。如果沒有新的關鍵字,我們可以使用'this'而不用新變量(self)。爲什麼在大多數示例中'this'創建新變量

function TestCtrl() { 

    var self = this; 
    self.people = [ 
     { 
     name: "Eric Simons", 
     born: "Chicago" 
     }, 
     { 
     name: "Albert Pai", 
     born: "Taiwan" 
     }, 
     { 
     name: "Matthew Greenster", 
     born: "Virginia" 
     } 
    ]; 
} 

angular.module('app', []) 
.controller('TestCtrl', TestCtrl); 

有什麼區別?

+1

可能因爲'this'根據調用方法和異步方法而變化。緩存解決'這個'。 – Tushar

+0

任何鏈接或任何堆棧溢出解釋簡要介紹? – nisar

+0

如果我們使用父母,孩子的功能,我們可以使用這個自我?否則這個新的自變量有什麼用處。 – nisar

回答

0

this的上下文取決於您使用它的位置。

controller('myController', function() { 

    var a = this; 


    $myElement.each(function(){ 
     var b = this; 
    }) 
}) 

在上面的例子中它們被使用的地方this上下文是不同的。

有時可能需要保存對this的引用以便在其他地方使用它。

+0

如果我使用子功能$ myElement.each()..... – nisar

+0

這只是一個例子 –

+0

我知道a,b使用@Charlie H,我們不能使用這兩個函數。這就是爲什麼創建一個,B使用它作爲單獨的。如果我沒有孩子的樂趣(在我的問題中的例子)..爲什麼使用自我? – nisar

0

在您提供的將變量this賦值給變量的示例中並不是必需的,但通常按慣例完成,因爲它可以提高代碼的可讀性。

this引用的對象根據使用範圍而變化。通過將其分配給特定範圍內的變量,您可以將該對象固定,以便您可以在子範圍內引用它。

您沒有使用任何兒童示波器,因此您可以直接參考this

+0

我沒有使用子範圍。 – nisar

+0

然後,你可以通過使用'this'就好了。你可能選擇不做的原因是爲了可讀性。除此之外,它並沒有真正改變。 – thip

+0

我已經更新了我的答案,以清楚地說明這一點。 – thip

相關問題