面向对象的JavaScript

近期,在做学校内部的小项目中,觉得自己的水平并没有得到很大的提升以及看到自己本身的局限性。所以特去图书馆借了几本关于JavaScript的书继续深造,其中就有

《Pro JavaScript Development》

并希望通过借博客这个平台记录自己的成长过程,且希望能以此激励自己。

JavaScript中公有、私有以及受保护的属性和方法:

    //我们将“类”的定义包在一个自我执行的函数里,这个函数返回我们所创建的“类”
    //并将其保存在一个变量中以便在后面的代码使用
    var accommodation = (function(){
        //定义“类”的构造函数。因为处在一个新的函数内,我们也切换到了一个新的作用域中,
        //所以可以使用与保存函数返回值的那个变量相同的名字
        function accommodation(){}

        var _isLocked = false,
            _isAlarmed = false,
            _alarmMessage = "Alarm activated!";
        //仅在当前作用域中定义的函数(而未在构造函数的原型上定义)也都是“私有的”
        function _alarm(){
            _isAlarmed = true;
            console.log(_alarmMessage);
        }
        function _disableAlarm(){
            _isAlarmded = false;
        }
        //所有定义在原型上的方法都是“公有的”,当我们在此处创建的“类”在闭包结束处被返回后,就可以
        //在当前作用域之外访问这些方法了
        accommodation.prototype.lock = function(){
            _isLocked = true;
            _alarm();
        };
        accommodation.prototype.unlock = function(){
            _isLocked = false;
            _disableAlarm();
        };
        //定义个getter函数来对私有变量_isLocked的值进行只读访问——相当于把变量定义为了“受保护的”
        accommodation.prototype.getIsLocked = function(){
            return _isLocked;
        };
        //定义一个setter函数来对私有变量_alarmMessage进行只写访问——相当于将其定义为了“受保护的”
        accommodation.prototype.setAlarmMessage = function(message){
            _alarmMessage = message;
        };
        //返回在这个作用域中创建的“类”,使之在外层作用域中即后面代码的所有位置都可用。只有公有的
        //属性和方法是可用的
        return accommodation;
    }());
    //创建一个对象实例
    var house = new accommodation();
    house.lock();//输出警告消息“Alarm activated”

    try{
        house._alarm();//
    }
    catch(error){
        console.log(error + ":错误!_alarm函数从未被公开暴露,所以无法直接通过“类”的对象实例进行访问");
    }
    console.log(house.isLocked);//undefined(_isLocked是私有的。在闭包外部访问不到)

    house.getIsLocked();//true

    house.setAlarmMessage("The alarm is now activated!");
    house.lock();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值