js 静态私有变量

来源:互联网 发布:湖北文理学院网络 编辑:程序博客网 时间:2024/05/16 01:40

特权方法:有权访问私有变量和私有函数的公有方法。在私有作用域中定义私有变量或函数,可以创建特权方法,如下:

示例1

复制代码
(function(){    //私有变量和私有函数    var privateVariable = 10;        function privateFunction(){        return false;    }        //构造函数    MyObject = function(){    }        //公有/特权方法    MyObject.prototype.publicMethod = function(){        privateVariable ++;        return privateFunction();    }    })();var object = new MyObject();console.log(object.publicMethod());//false
复制代码

  上面模式在定义构造函数时并没有使用函数声明,而是使用了函数表达式。函数声明只能创建局部函数,我们需要在私有作用域外面使用构造函数。声明MyObject时也没有使用var,这样MyObject就成了一个全局变量,能够在私有作用域之外被访问。

  由于特权方法是在原型上定义的,因此所有的实例都使用同一个函数,而这个特权方法,作为一个闭包,总是保存着对包含作用域的引用。

示例2:

复制代码
(function(){    var name = '';       Person = function(value){        name  = value;         }    Person.prototype.getName = function(){        return name;    }    Person.prototype.setName = function(value){          name = value;    }})();var person1 = new Person('Tom');var person2 = new Person('Lucy');console.log(person1.getName());//Lucyconsole.log(person2.getName());//Lucy
复制代码
0 0