javascript - js中return{}大括号的含义
巴扎黑
巴扎黑 2017-04-11 12:13:45
[JavaScript讨论组]

像以下的代码

var testModule = (function(){
    var counter = 0;
    return {
        incrementCounter: function(){
            return ++counter;
        },
        resetCounter: function(){
            counter = 0;
        }
    };
})();

是否可以理解为return 返回一个匿名的对象, 赋给testModule ,然后testModule拥有了incrementCounter和resetCounter两个可以访问闭包的方法 ? {}和里面的内容是否可以称为一个匿名对象,js有没有这个概念 ?

巴扎黑
巴扎黑

全部回复(7)
PHP中文网

Objectliteral,翻译为对象字面量,其实和Anonymous是一个目的,因为有些对象我们并不经常使用,所以就不给他添加引用,让GC回收掉,这样的好处大概有两个:

  1. 防止污染命名空间

  2. 利用了闭包特性

所以DC大神觉得这东西很不错,而且你知道,JSON就是这样来的。
PS:JS中很多特性的目的和其他语言中类似的特性目的是一样的,仅仅叫法不一样,比如箭头函数和懒不大,哦不lambda。

天蓬老师

你说的没有瑕疵呀,不过js里没听说匿名对象的,叫对象字面量更合适吧

PHP中文网

这个是闭包的使用,对外暴露了两个方法,然后可以在这个里面操作counter属性,就相当于counter是公有方法,不过没有听过匿名对象。。这个一般叫对象字面量

PHPz

返回一个对象嘛,返回到window作用域(如果该匿名函数在全局)。没有var testModule = 的话,就相当于这个对象在内存中,但是由于没有引用(指针)没法使用而已,用js引擎内部方法应该可以访问到,没有引用的在一定条件下就被当垃圾回收了

PHP中文网

你return的就是一个对象;

分析的也很对, 你的结果相当于是

var testModule = 
{
    incrementCounter: function(){
        return ++counter;
    },
    resetCounter: function(){
        counter = 0;
    }
}

这不就是对象吗

怪我咯

返回一个对象

PHPz

有理有据,令人幸福

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号