我想为每个“实例”使用唯一的私有变量(我希望这在Javascript中是正确的术语,但是两个实例似乎都使用相同的私有变量。
func = function(myName)
{
this.name = myName
secret = myName
func.prototype.tellSecret = function()
{ return "the secret of "+this.name+" is "+secret
}
}
f1 = new func("f_One")
f3 = new func("f_3")
console.log(f3.tellSecret()) // "the secret of f_3 is f_3" OK
console.log(f1.tellSecret()) // "the secret of f_One is f_3" (not OK for me)
我看到了solution但
这意味着在每个实例上复制该函数,并且 函数存在于实例上,而不存在于原型上。
[另一位作者谈到the same solution
这还不是很传统的类Javascript,它只能在Account.prototype。上定义一次方法。
所以,有解决方案的地方
?
我想为每个“实例”使用唯一的私有变量(我希望这是Javascript中的正确术语),但是两个实例似乎都使用相同的私有变量。 func = function(myName){...
问题在于,每次调用构造函数时,您都要替换原型函数。
具有基于闭包的旧式隐私,您不能从原型方法访问“私有”成员,因为只有在构造函数中定义的函数可以对其进行封闭。因此,您最终需要为每个实例重新构建功能(虽然听起来并不差,但效果并不理想)。