我正在阅读一本关于 DOM 脚本的书,当他们谈论 Ajax 时,书中出现了以下函数。
function getHTTPObject() {
if(typeof XMLHTTPRequest == "undefined")
XMLHTTPRequest = function() {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0");}
catch(e) {}
//several more fall through try/catch blocks attempting
//to create different XMLHTTP objects.
//If none succeed...
trả về sai;
}
return new XMLHTTPRequest();
}
如果尝试在分配给 XMLHTTPRequest 的内部匿名函数中创建 ActiveXObject 时在 try/catch block 中使用 new 关键字,为什么在 getHTTPObject 末尾返回 XMLHTTPRequest 的结果时再次使用 new 关键字()?
看起来它正在返回一个新的、新的对象。
biên tập
我大致了解代码的目的是什么,检查 XMLHTTPRequest 构造函数是否存在,如果不存在,则定义一个尝试创建 XMLHTTP ActiveXObjects 的构造函数。到目前为止我和你在一起。
假设 XMLHTTPRequest 未定义。
XMLHTTPRequest 被分配给内部函数构造函数。
然后在 getHTTPRequest 的底部调用 XMLHTTPRequest。
在 XMLHTTPRequest 中,创建一个新的 ActiveXObject 并将其返回给调用者,在本例中为 getHTTPObject。现在 getHTTPObject 又将该对象返回给它的调用者。但同样,为什么这一行是:
return new XMLHTTPRequest()
如果 new (即对象实例化)已经出现在 XMLHTTPRequest() 的定义/范围内的 try block 的代码中,是否需要 new ?为什么不简单地:
return XMLHTTPRequest()
谢谢大家的回答。很有可能,甚至很可能,我只是对 JS 构造函数语法没有足够强的掌握,这就是让我陷入困境的原因。
返回立即发生并退出代码块。这些返回中只有一项会受到影响。
Tôi là một lập trình viên xuất sắc, rất giỏi!