如果我在一个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!”
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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软件有没有人能远程安装啊