私有变量是否有“典型”用法?

时间:2011-10-24 20:08:26

标签: javascript

首先,我使用JavaScript的经验仅限于Web开发和一些自学。我想了解在JavaScript中拥有私有成员的观点。举个例子,

var myObject = {
    WriteWord: function() {
        var secret = 'word';
        document.writeln(secret);  
    }
};

myObject.WriteWord();

来电者无法看到私人变量secret。 AFAIK,我可以通过以下几种方式通知潜在的来电者WriteWord的存在:

  1. 记录代码。 Like jQuery does
  2. 对于.NET人员,编写一个自定义的visual studio intellisense插件。
  3. 直接阅读代码。
  4. 现在让我说我缩小甚至混淆代码。它现在难以理解。在我看来,鉴于这个场景,缺乏文档就像私有变量一样好。

    这个场景是不常见的还是有点不对劲? JavaScript中私有变量的重要性是什么?

3 个答案:

答案 0 :(得分:3)

封装和私有变量的整个目的,用Javascript或任何其他语言来限制自己的方式是允许在任何时候更改类的实现而不会破坏其余的的代码。您可以将密码重命名为任何其他名称或完全删除它,并确保代码继续正常工作。

另一方面,公共方法是生产者和消费者之间的耦合点,你不能轻易地改变公共接口,方法名称或参数,而不会破坏依赖它的程序的其他部分。 。 (这与代码被混淆或者如何使用公共方法完全无关 - 如果有人使用公共方法,耦合就已经存在了)

答案 1 :(得分:2)

在JavaScript中仔细确定变量范围可以消除页面上另一个脚本破坏变量的可能性。

当处理来自许多不同程序员的许多不同的JavaScript库/文件时,这成为一个有效的问题。

答案 2 :(得分:1)

本地(“私有”)变量对于保持代码可读非常有用。不仅因为描述性名称,还因为开发人员不必跟踪1000多个变量名称。

此外,某些变量不能“从外部”更改。考虑:

function (){
    var password = "random word";
    window.passwordAsker = function(){ 
        var asked = prompt("Password?", "");
        if(asked == password) {
            alert("Access granted"); //This should NOT be a real verification method
        }
    }
}