簡體   English   中英

在JavaScript中訪問全局函數變量

[英]Accessing global function variables in Javascript

我以某種方式認為您可以將函數定義為全局變量並訪問其內部變量。 例:

var func = function(){
    var connected = true;
}

console.log(func.connected);

但是,它仍然顯示為“ undefined”。 我認為對這樣的某些變量進行“命名空間”會很有趣。

我不想使用對象/列表/字典(您更喜歡稱呼它們),因為您可以delete這些元素。

這是不可能的。
實際上,這甚至沒有任何意義。
每次調用函數都會產生一組單獨的局部變量。

即使可以delete對象,也應使用對象創建名稱空間。

如果願意,您還可以開設一門課程:
請注意,您需要創建該類的實例

function MyClass() { 
    this.connected = true;
}

var myInstance = new MyClass();
console.log(myInstance.connected);

但是,不應使用類來創建單例名稱空間。 無關緊要。

相反,您應該寫

var myNamespace = { connected: true };

console.log(myNamespace.connected);

函數內部的var使其變為私有。 使用this.connected = true將其公開。

var func = function(){
    this.connected = true;
}

PS-據我所知,對象的所有屬性都可以刪除,除非它們是不可枚舉的,我認為您不能輕易指定。 即使它是可刪除的,也應使用this.connected

有一個很好的電文讀出這里的公共/私有方法和“特權”的方法。

編輯:我以為您知道有關實例化..無論如何只是做x = new func創建一個實例,然后x.connected

通過使用var是私有的。

像這樣使用它:

var func = function(){
    this.connected = true;
}
var namespace = new func();

console.log(namespace.connected);

請記住,它需要實例化。

您可以這樣使用JSON表示法:

var func = {
   connected:true,
   func:function(){
     func.connected = true;
   }
}
console.log(func.connected);
var MyClass = function() {
    function clazz() {
        this.message = "Hello"; //instance variable
    }

    clazz.connected = true; //static variable

    return clazz;
}();


alert(MyClass.connected)
alert(new MyClass().message)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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