簡體   English   中英

調用函數的內部變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM