如果我在一个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!”
导出啊