zoukankan      html  css  js  c++  java
  • 私有变量

    静态私有变量

    13:43:19

    作用:隐藏不应该被直接修改的数据

    1.       在函数内部创建闭包,可以通过自己的作用域链访问这些变量
     1 /*demo1*/
     2       /*在函数内部创建闭包,可以通过自己的作用域链访问这些变量*/
     3       /*基本模型*/
     4       function MyObject(){
     5             // 私有变量和私有函数
     6             var privateVariable = 10;
     7             function privateFunction(){
     8                   return false;
     9             }
    10             // 特权方法
    11             this.publicMethod = function (){
    12                   privateVariable++;
    13                   return privateFunction();
    14             }
    15       }
    16 /*demo2==>私有变量*/
    17 /*实例*/
    18       /*利用私有和特权成员,隐藏不应该被直接修改的数据*/
    19       /*注:特权方法getName()和setName()都可以在构造函数
    20       *外使用,都有权访问私有变量name。通过作用域链访问name*/
    21       /*===缺点:每个实例都会创建同样一组新方法,使用
    22       *==>使用静态私有变量解决问题
    23       */
    24       function Person(name){
    25             this.getName = function(){
    26                   return name;
    27             };
    28             this.setName = function(value){
    29                   name = value;
    30             };
    31       }
    32       var person = new Person('Nicholas');
    33       console.log(person.getName());//Nicholas
    34       person.setName('Greg');
    35       console.log(person.getName());//Greg
     1       /*基本模型*/
     2       (function(){
     3             // 私有变量和私有函数
     4             var privateVariable = 10;
     5             function privateFunction(){
     6                   return  false;
     7             }
     8             // 构造函数
     9             MyObject = function(){
    10 
    11             }
    12             // 公有/特权方法
    13             /*注:由于特权方法是在原型上定义,所有实例使用同一函数*/
    14             MyObject.prototype.publicMethod = function(){
    15                   privateVariable++;
    16                   return privateFunction();
    17             }
    18       })();
    19       /*基本实例*/
    20       (function(){
    21             var name='';
    22             Person = function(value){
    23                   name = value;
    24             };
    25             Person.prototype.getName = function(){
    26                   return name;
    27             };
    28             Person.prototype.setName = function(value){
    29                   name = value;
    30             }
    31       })();
    32       var person1 = new Person('Nicholas');
    33       console.log(person1.getName());//Nicholas
    34       person1.getName('Greg');
    35       console.log(person1.getName());//Gerg
    36       var person2 = new Person('Michael');
    37       console.log(person1.getName());//Michael
    38       console.log(person2.getName());//Michael
  • 相关阅读:
    Ubuntu apt-get "Hash Sum mismatch" 问题解决方法
    模型压缩相关工作
    bn两个参数的计算以及layer norm、instance norm、group norm
    cascade rcnn论文总结
    c++ 堆和栈以及区别
    c++ 浅拷贝和深拷贝 指针和引用的区别 malloc(free)和new(delete)的区别 重载重写重定义
    c++ 多态,虚函数、重载函数、模版函数
    c++问题整理
    repulsion-loss
    smooth l1
  • 原文地址:https://www.cnblogs.com/NB-JDzhou/p/6932946.html
Copyright © 2011-2022 走看看