Javascript Closure继续返回一个函数但应该是一个字符串

时间:2013-08-19 16:11:28

标签: javascript function object closures

我编写了以下闭包,它应该返回一个字符串,但它返回一个函数对象。我在这里做错了什么?

BDS.CDNS = (function() {

var DEVROOT;
var TESTROOT = '/';
var PRODROOT = '/';
var _IsSecure;

return {
    CDN1: function CDN1() {
        if (BDS.ENV === BDS.ENV_OPTIONS.DEV) {
            return (_IsSecure ? BDS.SECUREPROTOCOL : BDS.UNSECUREPROTOCOL) + DEVROOT;
        }
        else if (BDS.ENV === BDS.ENV_OPTIONS.TEST) {
            return (_IsSecure ? BDS.SECUREPROTOCOL : BDS.UNSECUREPROTOCOL) + TESTROOT;
        }
        else if (BDS.ENV === BDS.ENV_OPTIONS.PROD) {
            return (_IsSecure ? BDS.SECUREPROTOCOL : BDS.UNSECUREPROTOCOL) + PRODROOT;
        }
        return '';
    }
}());

致电BDS.CDNS.CDN1 =>功能对象。它应该返回一个字符串。

感谢。

1 个答案:

答案 0 :(得分:3)

当你引用BDS.CDNS.CDN1时,你得到一个函数对象,因为它是一个函数。要执行此功能,您需要包含括号:

BDS.CDNS.CDN1();