2014-02-20 47 views
-1

您好我正在學習,現在JS類現在有一個問題,即無法理解:JS類和對象

var o = new F(4) 
function F(temp){var a=22; this.temp = temp} 
alert(o.temp); // print 4 
alert(o.a); // print undefined 

從面向對象的觀點:「F」是類/構造,「O」是對象,「temp」是對象的字段,那麼變量「a」是什麼以及如何得到它?

+0

因爲a是在F()中使用的局部變量,其中temp是F的屬性,所以您可以訪問。 –

+0

感謝您的幫助,這是一個很好的例子 – Simcha

回答

1

請注意:JavaScript並沒有像其他語言那樣真正具有「類」。它被稱爲原型語言或原型語言。

在答案

,你不能訪問a,因爲它不是o成員。如果您想通過說o.a來訪問它,那麼在構造函數中,您必須寫入this.a = //whatever

構造函數就像任何其他函數一樣。使它們成爲構造函數的唯一方式是new關鍵字使函數查找同名的原型的方式,使該函數成爲其「構造函數」並設置正確的上下文。據說,在函數作用域中聲明的任何局部變量對於該函數而言都是本地的,無論該函數是否在該特定時間點僞裝成構造函數。

1

當你在上面用關鍵字var屬性,這個元素只是他的父母範圍存在。

因此,在您的示例中,aF類的私人成員。

例如:

'use strict'; 

;(function() { // private function 

var a = "toto"; 
alert (a); // display "toto" 

})(); // autocalled 

alert (a); // undefined 

Howether:

'use strict'; 

var a = "toto"; 

;(function() { 
alert (a); // display toto 
}(); 

;(function() { 
alert (a); // display toto 
}(); 

在這個例子中,a是全球性的,以當前執行的腳本,可以在代碼中到處調用。