陈大猪猪 2021-10-08 17:03 采纳率: 50%
浏览 28
已结题

如果我在一个js文件中定义了多个变量和方法,如何选择性的允许其他js文件引用其中的一部分?

如果我在一个js文件中定义了多个变量和方法,如何选择性的允许其他js文件引用其中的一部分?

  • 写回答

3条回答 默认 最新

  • 神仙别闹 2021-10-08 17:06
    关注

    看下这个,共有域和私有域的用法

     var Accommodation = (function(){
            function Accommodation(){}
                    //此处定义的所有变量都是私有的
                    var _isLocked = false,
                    _isAlarmed = false,
                    _alarmMessage = "Alarm actiated!";  
    
            //**仅在当前作用域中定义的函数(未在构造函数原型上定义)也是私有的**
            function _alarm(){
                    _isAlarmed = true;
                    alert(_alarmMessage);
            }
            function disableAlarm(){
                    _isAlarmed = false; 
            }
            //**所有定义在原型上方法都是“公有”的,当我们在此处创建的类在闭包结束处被返回后,就可以在当前作用域之外**
            //访问这些方法了
            Accommodation.prototype.lock = function(){
                    _isLocked = true;
                    _alarm();
            };
            Accommodation.prototype.unlock = function(){
                    _isLocked = false;
                    _disableAlarm();
            };
            //定义一个getter函数来对来对私有变量的值作只读访问——相当于受保护的
            Accommodation.prototype.getIsLocked = function(){
                    return _isLocked ;
            };
    
            //setter函数进行只写访问
            Accommodation.prototype.setAlarmMessage = function(message){
                    _alarmMessage = message;
            };
    
            //返回在这个作用域中创建的类,使之在外层作用域中即后面代码的所有位置都可用
            return Accommodation;
    }());
    
    //创建一个对象实例
    var house = new Accommodation();
    house.lock();   //弹出警告消息“Alarm activeted”
    house._alarm();   //错误!_alarm()未公开,无法直接访问
    alert(house._isLocked);   //undefined(私有,在闭包外不能访问)
    house.getIsLocked();      //true(返回isLocked,但不允许对其直接访问,所以该变量是只读的)
    house.setAlarmMessage("The alarm is now activated!");   
    house.lock();     //弹出警告消息“The alarm is now activated!”
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月18日
  • 已采纳回答 11月10日
  • 创建了问题 10月8日

悬赏问题

  • ¥15 mySQL5.7.34安装遇到的问题
  • ¥15 结构功能耦合指标计算
  • ¥20 visual studio中c语言用ODBC链接SQL SERVER
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊