不知何故,我认为您可以将函数定义为全局变量并访问其内部变量。 例如:
var func = function(){
var connected = true;
}
console.log(func.connected);
然而,这仍然是“未定义”。 我认为“命名”某些变量会很有趣。
我不想使用对象/列表/词典(您更喜欢如何调用它们),因为您可以delete
这些元素。
答案 0 :(得分:2)
这是不可能的。
事实上,它甚至没有意义
每次调用函数都会产生一组独立的局部变量。
您应该使用对象来创建命名空间,即使您可以delete
它们。
如果你愿意,你也可以上课:
请注意,您需要创建类的实例:
function MyClass() {
this.connected = true;
}
var myInstance = new MyClass();
console.log(myInstance.connected);
但是,您不应该使用类来创建单例命名空间;没有意义。
相反,你应该写
var myNamespace = { connected: true };
console.log(myNamespace.connected);
答案 1 :(得分:2)
var
使其成为私有的。使用this.connected = true
将其公开。
var func = function(){
this.connected = true;
}
PS - 据我所知,对象的所有属性都是可删除的,除非它们是不可枚举的,我认为你不能轻易指定。您应该使用this.connected
,即使它是可删除的。
公共/私有方法和“特权”方法有一个很好的读数here。
编辑:我认为你知道实例化..无论如何只需要x = new func
来创建一个实例,然后x.connected
。
答案 2 :(得分:1)
使用var
它是私有的。
像这样使用它:
var func = function(){
this.connected = true;
}
var namespace = new func();
console.log(namespace.connected);
请记住它需要实例化。
答案 3 :(得分:0)
您可以使用这样的JSON表示法:
var func = {
connected:true,
func:function(){
func.connected = true;
}
}
console.log(func.connected);
答案 4 :(得分:0)
var MyClass = function() {
function clazz() {
this.message = "Hello"; //instance variable
}
clazz.connected = true; //static variable
return clazz;
}();
alert(MyClass.connected)
alert(new MyClass().message)