我有一个代码,想分析一下此代码:
var HttpClient = function() {
this.get = function(aUrl, aCallback) {
var anHttpRequest = new XMLHttpRequest();
anHttpRequest.onreadystatechange = function() {
if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200)
aCallback(anHttpRequest.responseText);
}
anHttpRequest.open( "GET", aUrl, true );
anHttpRequest.send( null );
}
}
我不明白function(aUrl, aCallback)
的含义是什么?并且,aUrl和aCallback输入未定义?请帮助我解决这个问题
答案 0 :(得分:2)
它正在创建一个接受aUrl
和aCallback
作为参数的函数,并将该函数分配给get
上的this
属性。因此,在调用HttpClient
时,它所做的全部都分配给该this.get
属性。直到/除非调用this.get
,该内部函数中的代码才会运行。 HttpClient
最可能通过new
使用,如下所示:
var client = new HttpClient();
在HttpClient
中创建的函数的代码将通过以下方式运行:
client.get("/some/url", function() {
// This is the callback
});
这是一个更简单的示例:
function Client() {
this.get = function(a, b) {
console.log("a = " + a + ", b = " + b);
};
}
console.log("Create Client instance:");
var c = new Client();
console.log("Calling c.get():");
c.get(1, 2);
console.log("Calling c.get() again:");
c.get(3, 4);