javascript语言精粹学习笔记

<script type="text/javascript">



var obj = (function() {
    var value = 1;
    return {
        increase: function(inc) {
            value += inc;
            return this;
        },
        getValue: function() {
            return value;
        }
    }
}());
//obj是一个匿名函数
//如果使用var obj = function(){}();的形式书写的话,obj就表示为return后的对象
//不加最后的括号的话,则表示整个函数
//这样的写法就可以让外面无法访问到本地的value了
//但是return返回的对象则可以使用定义的value
//这就表示此函数已经返回,照理说函数的所有内容应该都已销毁,可是value却保存了下来,这就是闭包的体现
//闭包的写法比较灵活,代码也比较难看懂
//这里实际上返回的是对象字面量形式,不是传统意义上new出来的对象
//这里所谓的value并非此对象的私有变量,而是此对象的父函数的局部变量,由于在该对象中使用到了这个value
//所以不能直接销毁,而是继续给其子函数使用,直到子函数销毁为止
console.log(obj.value);//显示undefined,无法获取
console.log(obj.increase(2).getValue());//3

var Obj2 = function() {//javascript中,函数也是对象
    this.value = 1;
}
Obj2.prototype.increase = function(inc) {
    this.value += inc;
    return this;
}
Obj2.prototype.getValue = function() {
    return this.value;
}

var obj2 = new Obj2();
//使用js中new的方式创建的对象,是可以从外部访问到变量的
//这是因为javascript中没有private属性的缘故
console.log(obj2.value);//1
console.log(obj2.increase(2).getValue());//3








</script>

看javascript语言精粹闭包章节之后做的试验,虽然代码很短,但是内容还是很丰富的,对于我理解闭包还是很有帮助的。

转载于:https://www.cnblogs.com/zydmayday/p/3479442.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值