2010-09-14 170 views
2

我现在设立类似下面非静态私有变量

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

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

我的JavaScript对象,如果我使用原型继承来创建新的对象

Object2.prototype = Object1 

然后设置专用成员

Object2.setPrivateMember("new value"); 

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

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

+1

应该使用'Object2.prototype = Object1()'或这只是粘贴代码中的一个错字吗? – MooGoo 2010-09-14 14:35:37

+0

[继承原型中的私有变量]的可能重复(http://stackoverflow.com/questions/3617139/private-variables-in-inherited-prototypes) – 2010-09-14 14:47:47

回答

2

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

var privateMember = "private value";
+1

这是我的问题中的一个错字。问题仍然发生,即使当我使用var – wheresrhys 2010-09-14 14:29:50

2

编辑我的答案,你可以检查这是否工作?

试试这个 -

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

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

      }; 
    return returnVal; 
}();