我有这在我的节点脚本(简化了这个问题)属性名称:使用以下划线(“_”)开始
var http = require("http"),
url = require("url"),
options = url.parse("http://example.com/"),
moreOptions = url.parse("http://example.net/"),
callback,
request,
moreDifferentRequest;
callback = function(res) {
console.log(res.socket._httpMessage._headers.host);
}
request = http.request(options, callback);
request.end();
moreDifferentRequest = http.request(moreDifferentOptions, callback);
moreDifferentRequest.end();
我从res.socket._httpMessage._headers.host
抓住主机名,因为它不存在在res.headers
。
但下划线让我停下来。他们对我说:“嘿,这只是作为私人财产对待,仅供socket
供内部使用,所以不要阅读它,因为它可能会在更高版本中完全改变,我们也不会说您。”
如果我正确地认为我是这样做是错误的在这里,在回调中获取主机名的正确方法是什么?或者,我只是完全误解了下划线,我做的很好?
是的,这正是他们想说什么。如果可能的话,正确的方法当然是使用公开的,有记录的API。但是,如果不可能,那么你必须做到这一点,如果事情破裂,意识到它在你身上。 – Esailija
看看** @ David de Rosier第三点**这里:http://stackoverflow.com/a/7217209/1601332 //或许给你一些关于它的信息;-)祝你好运! – gmo