论坛首页 Web前端技术论坛

问一个关于js的语法问题

浏览 4168 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-21  
var YAHOO = function() {
    return {
        /**
         * Yahoo presentation platform utils namespace
         */
        util: {},

        /**
         * Yahoo presentation platform widgets namespace
         */
        widget: {},

        /**
         * Yahoo presentation platform examples namespace
         */
        example: {},
    };
} (); //这里的一对括号起什么作用?

最后面的括号让我有点看不明白,有觉得没有也应该有同样的功能啊
和下面的写法一样吗?
var YAHOO = {
        /**
         * Yahoo presentation platform utils namespace
         */
        util: {},

        /**
         * Yahoo presentation platform widgets namespace
         */
        widget: {},

        /**
         * Yahoo presentation platform examples namespace
         */
        example: {}
};
   发表时间:2007-05-21  
在EXT里面有很多这样的写法。好处是可以在return前面定义一些closure变量,在return的函数里面能够调用。
0 请登录后投票
   发表时间:2007-05-21  
一样是一样的。但是对于类库来说,采用前者的目的通常是为了把某些东西隐藏起来,即在function内部的许多变量和函数不需要被导出到全局命名空间上。所以会采用前面的写法。
0 请登录后投票
   发表时间:2007-05-21  
i_love_sc 写道
在EXT里面有很多这样的写法。好处是可以在return前面定义一些closure变量,在return的函数里面能够调用。


那要是最后的“()”去掉结果还一样吗?
0 请登录后投票
   发表时间:2007-05-21  
maxwell_hu 写道
i_love_sc 写道
在EXT里面有很多这样的写法。好处是可以在return前面定义一些closure变量,在return的函数里面能够调用。


那要是最后的“()”去掉结果还一样吗?


当然不一样了,你少了一次函数调用,结果返回了一个函数给你。
0 请登录后投票
   发表时间:2007-05-21  
这是Power Constrcutor, 用于 singleton  可参阅yahoo UI 剧院的Advanced JavaScript By DC
0 请登录后投票
   发表时间:2007-05-21  
sp42 写道
这是Power Constrcutor, 用于 singleton  可参阅yahoo UI 剧院的Advanced JavaScript By DC

可否给个地址   谢谢
0 请登录后投票
   发表时间:2007-05-21  
http://developer.yahoo.com/yui/theater/
YAHOO公司的讲座视频
Douglas Crockford — "Advanced JavaScript"
虽然为英文的录像,但其附件的PPT仍可参考
0 请登录后投票
   发表时间:2007-05-21  
sp42 写道
http://developer.yahoo.com/yui/theater/
YAHOO公司的讲座视频
Douglas Crockford — "Advanced JavaScript"
虽然为英文的录像,但其附件的PPT仍可参考


Thank you sp42
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics