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

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

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

 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!”

导出啊

封装成方法 导入 import 导出 export