[英]calling inner variable of a function
為什么我必須使用函數的新實例才能獲取內部變量,但是我不能使用函數本身,
為什么這樣做
function bla(){this.a = 1}
b = new bla
alert (b.a)
而且這不
function bla(){this.a = 1}
alert (bla.a)
?
因為您必須調用函數才能定義變量。
如果要執行您正在說的事情,則可以使用對象文字
var bla =
{
a: 1,
displayA: function() {
alert(bla.a);
}
};
alert(bla.a); // Displays 1
bla.displayA(); // Displays 1
您必須創建該對象的新實例。 在這種情況下,第一個有效是因為您聲明
b = new bla
只是一個小提示,您應該像這樣編寫它,以防止可能的錯誤...
function bla(){this.a = 1;}
b = new bla();
alert(b.a);
因為以這種方式使用函數時,實際上是在制作帶有屬性的對象,並且如果不使用new
關鍵字實例化該對象,就無法訪問該對象的屬性。
您可以執行此操作,它還會返回1:
function bla(){ return 1;}
alert (bla());
尚未指出的是:
function bla(){this.a = 1}
alert (bla.a)
bla尚未被稱為構造函數或對象的方法,因此其this關鍵字設置為global / window對象。 因此,將一個屬性添加到全局/窗口對象,您可以執行以下操作:
alert(a)
但這通常是不希望的結果。 在ES5嚴格模式下,以這種方式調用函數將導致其this關鍵字未定義 ,因此this.a
將引發錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.