【问题标题】:Non-static private variables in javascriptjavascript中的非静态私有变量
【发布时间】:2011-04-12 04:56:24
【问题描述】:

我正在设置我的 javascript 对象,如下所示

Object1 = function() {
  var privateMember = "private value"

  return {
    publicMember: "public value"
    setPrivateMember: function(value) {
       privateMember = value;
    }
  }
}();

现在如果我使用原型继承来创建新对象

Object2.prototype = Object1

然后设置私有成员

Object2.setPrivateMember("new value");

然后对象 1 中的私有成员的值也发生了变化,因此它的行为更像是一个静态变量。有没有办法让私有变量不是静态的?

PS - 我是一名自学成才的程序员,所以我对术语的使用可能有点粗略。让我知道是否需要澄清

【问题讨论】:

标签: javascript object static private


【解决方案1】:

Righto,知道我以前做过这样的事情:
Private variables in inherited prototypes

;oP

【讨论】:

  • 我知道之前一定有人问过它,但就是找不到要搜索的正确短语。为答案喝彩
【解决方案2】:

您正在创建一个全局变量。把 var 放在前面。

var privateMember = "private value";

【讨论】:

  • 这是我的问题中的一个错字。即使我使用 var,问题仍然存在
【解决方案3】:

编辑了我的答案,你能检查一下这是否有效吗?

试试这个 -

Object1 = function() {  
  var privateMember = "private value"; 

  var returnVal =  {  
                publicMember: "public value",  
                setPrivateMember: function(value) {  
                privateMember = value;  
                }

           }; 
  return returnVal; 
}(); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多