试图用闭包简化一些Javascript

时间:2010-05-15 15:33:46

标签: javascript closures

我正在尝试简化一些使用闭包的JS代码,但我无处可去(可能是因为我没有关闭闭包)

我有一些看起来像这样的代码:

var server = http.createServer(function (request, response) {
    var httpmethods = {    
        "GET": function() {
            alert('GET')
        },
        "PUT": function() {
            alert('PUT')
        }
    };
});

我正试图以这种方式简化它:

var server = http.createServer(function (request, response) {
    var httpmethods = {    
        "GET": function() {
            alertGET()
        },
        "PUT": function() {
            alertPUT()
        }
    };
});

function alertGET() {
    alert('GET');
}

function alertPUT() {
    alert('PUT');
} 

不幸的是,这似乎不起作用...... 从而:     - 我究竟做错了什么?     - 是否有可能做到这一点?      - 怎么样?

TIA

- MV

1 个答案:

答案 0 :(得分:0)

没有正确设置对象,你将函数名称作为字符串放在httpmethods对象中,而不是给它们命名 - 尝试这样的事情:

var server = http.createServer( function (request, response) {});

var httpmethods = {
    get: function() { 
      alertGET()
    },
    put: function() {
      alertPUT()
    }
};

function alertGET() {
        alert('GET called');
}

function alertPUT() {
        alert('PUT called');
}

httpmethods.get()
httpmethods.put()

这是你在对象中定义方法的方式,但不确定你在那里的其他东西(http.createServer()......?)