js 使用闭包模拟私有变量

发布于 2022-09-07 09:00:27 字数 513 浏览 18 评论 0

function Ninja(){
    var feints = 0;
    this.getFeints = function(){
        return feints;
    };
    this.feint = function() {
        feints++;
    };
}
var ninja1 = new Ninja();
ninja1.feint();
console.log(ninja1.feints);
console.log(ninja1.getFeints());
    

//undefined
//1
我想问一下这里的闭包是怎么实现可以通过ninja1.getFeints()来获取累加之后的feints的值却无法直接通过ninja1.feints来获取值?

是不是可以这样理解:ninja1.feints因为feints在构造函数的内部,所以无法访问,但通过调用ninja1.feint()这个方法,feints存在于闭包内,所以可以通过getFeints()进行返回?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我ぃ本無心為│何有愛 2022-09-14 09:00:27

问题1 : console.log(ninja1.feints) 。 ninja1对象没有feints属性,所以打印undefind;
问题2 : fients变量的作用域是Ninja整个对象内,对象内都可以访问到,至于函数返回,只是返回的数据.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文