javascript中的非静态私有变量

时间:2010-09-14 14:20:23

标签: javascript object static private

我正在设置我的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 - 我是一名自学成才的程序员,因此我对术语的使用可能有点粗略。如果需要澄清,请告诉我

3 个答案:

答案 0 :(得分:3)

对了,知道我之前发过这样的事情:
Private variables in inherited prototypes

;业务

答案 1 :(得分:2)

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

var privateMember = "private value";

答案 2 :(得分:2)

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

试试这个 -

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

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

           }; 
  return returnVal; 
}();