javascript学习--------闭包

本文内容全部参考javascript忍着秘籍

function  Ninja() {
    var feints=0;
    this.getFeints=function () {
        return feints;
    }
    this.fint=function () {
        feints++;
    }
}
var ninja1 = new Ninja();
ninja1.fint();
ninja1.fint();
console.log(ninja1.getFeints());//2
var ninja2 = new Ninja();
console.log(ninja2.getFeints());//1

Ninja构造函数创建的实例对象ninja1调用了两次递增方法,所以值为2
Ninja构造函数创建的实例对象ninja2没有调用递增方法,具有独立的feints

getFeints和fint函数是构造函数Ninja的内部函数,在Ninja构造函数外部访问构造函数内部的getFeints和fint函数,这样已经创建了包含feints变量的闭包。

通过构造函数Ninja创建的实例对象均获得各自的方法,各自的实例方法包含各自的变量。

通过的是实例对象调用getFeints函数访问访问的私有变量,而不是对象直接访问的
所以说javascript没有真正的私有变量,只是可以通过闭包实现一直可以接受私有变量的方案!!

总结:通过闭包可以访问创建闭包是所处环境中的全部变量。
闭包高级功能:通过构造函数内的变量以及构造方法模拟对象的私有属性
处理回调函数,简化代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值