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