javascript中的静态自我成员[重复]
Posted
技术标签:
【中文标题】javascript中的静态自我成员[重复]【英文标题】:Static self member in javascript [duplicate] 【发布时间】:2012-06-09 08:57:39 【问题描述】:可能重复:Static variables in javascript
如何在 javascript 中对 self 成员进行静态封装? 比如在php中:
class bar
static public $foo;
static public function set()
self::$foo = 'a';
bar::set();
在 JavaScript 中: var bar = 函数 () ?????? bar.set();
谢谢!
【问题讨论】:
这看起来不像 javascript,更像 php。 @Qmal 这正是 OP 所说的:“这是一些 php 代码,如何在 javascript 中做同样的事情?” 【参考方案1】:只需将它们定义为bar
的属性。
bar.foo = null;
bar.set = function()
bar.foo = "a";
这是一个很好的概述:
var bar = function()
// Private instance variables
var a = 1;
// Public instance variables
this.b = 5;
// Privileged instance methods
this.c = function()
return a;
;
// Public instance methods
bar.prototype.d = function()
return ++this.b;
// Public static variables
bar.foo = null;
// Public static methods
bar.set = function()
bar.foo = "a";
【讨论】:
您刚刚复制了duplicate。请投票结束而不是回答,避免不必要的重复。 @FlorianMargaine 我在你发表评论之前就开始写这篇文章了。不过你是对的,这是重复的。 那是我的错 :-) 不过我的第一条评论仍然适用。 我会投票关闭,但我还没有这个特权。希望其他人可以帮助投票。【参考方案2】:创建一个创建对象并返回它的闭包。在闭包内你可以声明局部变量,它们是作用域私有的:
var bar = (function()
var foo;
return
set: function()
foo = 'a';
;
)();
bar.set();
【讨论】:
还有……new bar()
给出了什么?看起来 OP 想要一个类似类的解决方案,而不是如何制作私有/公共变量。
@FlorianMargaine: Aaaaannd... 没有什么明显的,因为bar
不是一个函数。问题中的用法表明OP想要可以用作对象的东西,这表明它也应该用作构造函数?
嗯,这就是“静态”术语通常的意思:使用在您可以实例化的类中定义的静态方法。不过,我想你的答案有它的位置。以上是关于javascript中的静态自我成员[重复]的主要内容,如果未能解决你的问题,请参考以下文章
静态成员存储在内存中的啥位置? C#.Net中的堆栈/堆[重复]