zoukankan      html  css  js  c++  java
  • 【JS笔记】私有变量

    1.任何函数中定义的变量都可以认为是私有变量。函数内部可以访问,外部不能访问。

    可以通过闭包创建特权方法访问私有变量。

    function Foo(){
        var n=10;
        this.returnN=function(){
            return n;
        };
    };
    var newfoo=new Foo();
    console.log(newfoo.returnN())//10

    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("Nicholas");
    alert(person1.getName());   //"Nicholas"
    person1.setName("Greg");
    alert(person1.getName());   //"Greg"
                                   
    var person2 = new Person("Michael");
    alert(person1.getName());   //"Michael"
    alert(person2.getName());   //"Michael"

    这种方法下,name成了一个所有实例公有的静态属性,更改它会影响到所有的实例。

    3.模块模式是为单例创建私有变量和特权方法的。(单例指只有一个实例的对象,是以对象字面量的方式创建的。)

    var single=function (argument) {
        var privateVar=10;
        function privateFun () {
            //私有方法函数
        }
        return {
            publicProerty:true,
            //返回的共有方法可访问私有变量
            publicMethod:function () {
                privateVar++;
                return privateFun()
            }
        }
    }

    模块模式使用一个返回对象的匿名函数,在这个匿名函数的内部,首先定义私有变量和函数,然后将一个对象字面量作为函数的值返回。返回的对象字面量中只包含公开属性和方法。由于这个对象是在匿名函数内部定义的,因此它的共有方法有权访问私有变量和函数。也就是说,这个对象字面量定义的是单例的公共接口。这种模式在需要对单例进行某些初始化,同时又需要维护其私有变量时有用。

  • 相关阅读:
    2所非211院校挺进全球高校600强,甩开一众985 | 泰晤士世界大学排行榜出炉
    深度强化学习专栏(三)
    PyTorch专栏(八):微调基于torchvision 0.3的目标检测模型
    PyTorch专栏(六): 混合前端的seq2seq模型部署
    3分钟了解GPT Bert与XLNet的差异
    PyTorch专栏(五):迁移学习
    NLPer,你知道最近很火的自然语言处理库么?
    E
    网络流 I
    D
  • 原文地址:https://www.cnblogs.com/rizzle/p/4534662.html
Copyright © 2011-2022 走看看