【发布时间】:2014-08-11 13:27:06
【问题描述】:
我试图弄明白在 JavaScript 中何时使用私有方法以及何时使用特权方法。根据这篇文章:Private Members in JavaScript,可以通过私有方法和特权方法访问和修改对象的私有成员。在编写 getter 方法(针对私有成员)时,您会使用私有方法还是特权方法?为什么?对于访问器(修改私有成员的方法),您会使用私有方法还是特权方法?为什么?在这种情况下使用的标准技术是什么?
最后,使用私有方法和特权方法访问私有变量有什么区别(除了不能从外部调用私有方法)。
function ClassB(given)
{
var myVar = given;
function _get ()
{
return myVar;
};
this.get = function ()
{
myVar = myVar + 3;
return myVar;
};
}
【问题讨论】:
-
使用适合你的任何东西,在 js 中伪造经典继承没有硬性规定。
-
我更担心安全问题。目前我正在使用一个私有函数来访问/修改一个私有成员,以及一个调用私有函数的特权函数。如果我只使用特权方法,会不会影响安全性?
-
@FranXh 不要假设任何客户端都是“安全的”
-
实际上显示的方法是“受保护的”,就像 doug 所说的那样,公共的,就像大多数人所说的那样。没有私有方法,只有私有内部函数,它们本质上不会发布到实例。安全性在于控制对 myVar 的更改,这可能发生在公共、“私有”或“受保护”函数中,安全性完全没有差异,因为只有内部函数才能看到 myVar,而不管可见性如何。
-
@dandavis “这可能发生在公众身上”。你这是什么意思?可以从公共方法访问私有变量吗?
标签: javascript methods private member