gpt4 book ai didi

javascript - Node.js 括号语法

转载 作者:行者123 更新时间:2023-12-03 09:11:34 26 4
gpt4 key购买 nike

我试图理解一些用于制作 Node.js 调度程序的代码,但我无法理解一行。也许是我的 JavaScript 差距。 。 。我带着疑问评论了代码。

var HttpDispatcher = function() {
this.listeners = { get: [ ], post: [ ] };
}

HttpDispatcher.prototype.on = function(method, url, cb) {
this.listeners[method].push({
cb: cb,
url: url
});
}

HttpDispatcher.prototype.onGet = function(url, cb) {
this.on('get', url, cb);
}

HttpDispatcher.prototype.onPost = function(url, cb) {
this.on('post', url, cb);
}

HttpDispatcher.prototype.dispatch = function(req, res) {
var parsedUrl = require('url').parse(req.url, true);
var method = req.method.toLowerCase();
this.listener[method][parsedUrl.pathname](req, res); // i don't understand this line
}

为什么我们将 this.listener 称为二维数组?我们将监听器定义为对象数组!为什么我们要传递参数?

最佳答案

这不是一个二维数组,它的bracket notation用于访问对象的嵌套属性。

this.listener[method][parsedUrl.pathname](req, res)
|-------------------||------------------||--------|
^object property of ^nested function ^ invocation of the function
the listener object of the listener
where the property object where the
key is the method property key is
the path name

可以通过将点和/或括号引用链接在一起来访问嵌套对象的属性。以下都是等效的:

object.baz.foo.bar;
object["baz"]["foo"]["bar"];
object["baz"].foo["bar"];

检查this了解更多详情。

关于javascript - Node.js 括号语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32061273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com