【问题标题】:Static self member in javascript [duplicate]javascript中的静态自我成员[重复]
【发布时间】: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 中做同样的事情?”

标签: javascript static self


【解决方案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想要可以用作对象的东西,这表明它也应该用作构造函数?
  • 嗯,这就是“静态”术语通常的意思:使用在您可以实例化的类中定义的静态方法。不过,我想你的答案有它的位置。
猜你喜欢
  • 2012-07-24
  • 2011-01-10
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
相关资源
最近更新 更多