扩展Javascript原型方法
我很难理解这是如何保留一个函数并从本质上扩展它的 我看到扩展Javascript原型方法,javascript,Javascript,我很难理解这是如何保留一个函数并从本质上扩展它的 我看到(function(){})将立即调用声明的函数。我不明白什么是open参数。最后,我不明白(XMLHttpRequest.prototype.open)会发生什么。这是调用原型函数吗 (function(open) { XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { open.call(this, arguments);
(function(){})
将立即调用声明的函数。我不明白什么是open
参数。最后,我不明白(XMLHttpRequest.prototype.open)
会发生什么。这是调用原型函数吗
(function(open) {
XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
open.call(this, arguments);
};
})(XMLHttpRequest.prototype.open);
function(open){..}
声明一个只接受一个参数的函数。(..)(XMLHttpRequest.prototype.open)
正在调用此函数,并将XMLHttpRequest.prototype
的open
函数作为参数传递。是的,它传递的是实际函数本身;函数可以像值一样传递
因此,在IIFE(立即调用的函数表达式)中,open
是XMLHttpRequest.prototype.open
的原始实现
然后,在IIFE中,XMLHttpRequest.prototype.open
被一个新函数替换。在新函数中,调用原始的open
函数。这本身并不太令人兴奋,但它展示了如何在调用的XMLHttpRequest.prototype.open
和执行的实际原始open
函数之间插入自己的代码
iLife的全部考验只是保留原始open
函数的句柄,在任何情况下都不能被其他代码覆盖,因为它是函数的本地句柄。function(open){..}
声明了一个带一个参数的函数。(..)(XMLHttpRequest.prototype.open)
正在调用此函数,并将XMLHttpRequest.prototype
的open
函数作为参数传递。是的,它传递的是实际函数本身;函数可以像值一样传递
因此,在IIFE(立即调用的函数表达式)中,open
是XMLHttpRequest.prototype.open
的原始实现
然后,在IIFE中,XMLHttpRequest.prototype.open
被一个新函数替换。在新函数中,调用原始的open
函数。这本身并不太令人兴奋,但它展示了如何在调用的XMLHttpRequest.prototype.open
和执行的实际原始open
函数之间插入自己的代码
iLife的全部考验只是保留原始open
函数的句柄,在任何情况下都不能被其他代码覆盖,因为它是函数的本地句柄。function(open){..}
声明了一个带一个参数的函数。(..)(XMLHttpRequest.prototype.open)
正在调用此函数,并将XMLHttpRequest.prototype
的open
函数作为参数传递。是的,它传递的是实际函数本身;函数可以像值一样传递
因此,在IIFE(立即调用的函数表达式)中,open
是XMLHttpRequest.prototype.open
的原始实现
然后,在IIFE中,XMLHttpRequest.prototype.open
被一个新函数替换。在新函数中,调用原始的open
函数。这本身并不太令人兴奋,但它展示了如何在调用的XMLHttpRequest.prototype.open
和执行的实际原始open
函数之间插入自己的代码
iLife的全部考验只是保留原始open
函数的句柄,在任何情况下都不能被其他代码覆盖,因为它是函数的本地句柄。function(open){..}
声明了一个带一个参数的函数。(..)(XMLHttpRequest.prototype.open)
正在调用此函数,并将XMLHttpRequest.prototype
的open
函数作为参数传递。是的,它传递的是实际函数本身;函数可以像值一样传递
因此,在IIFE(立即调用的函数表达式)中,open
是XMLHttpRequest.prototype.open
的原始实现
然后,在IIFE中,XMLHttpRequest.prototype.open
被一个新函数替换。在新函数中,调用原始的open
函数。这本身并不太令人兴奋,但它展示了如何在调用的XMLHttpRequest.prototype.open
和执行的实际原始open
函数之间插入自己的代码
iLife的整个考验就是保留原始
open
函数的句柄,该句柄在任何情况下都不能被其他代码覆盖,因为它是函数的本地句柄。这正是该函数的复制品
//Create a XMLHttpRequest.realOpen function and store the original XMLHttpRequest.open function in it
XMLHttpRequest.prototype.realOpen = XMLHttpRequest.prototype.open;
//Change the XMLHttpRequest.open function
XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
//Do Your Code Here....
//Call original XMLHttpRequest.open function which is now saved in XMLHttpRequest.realOpen function
this.realOpen(method, url, async, user, password);
};
这是这个的复制品
//Create a XMLHttpRequest.realOpen function and store the original XMLHttpRequest.open function in it
XMLHttpRequest.prototype.realOpen = XMLHttpRequest.prototype.open;
//Change the XMLHttpRequest.open function
XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
//Do Your Code Here....
//Call original XMLHttpRequest.open function which is now saved in XMLHttpRequest.realOpen function
this.realOpen(method, url, async, user, password);
};
这是这个的复制品
//Create a XMLHttpRequest.realOpen function and store the original XMLHttpRequest.open function in it
XMLHttpRequest.prototype.realOpen = XMLHttpRequest.prototype.open;
//Change the XMLHttpRequest.open function
XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
//Do Your Code Here....
//Call original XMLHttpRequest.open function which is now saved in XMLHttpRequest.realOpen function
this.realOpen(method, url, async, user, password);
};
这是这个的复制品
//Create a XMLHttpRequest.realOpen function and store the original XMLHttpRequest.open function in it
XMLHttpRequest.prototype.realOpen = XMLHttpRequest.prototype.open;
//Change the XMLHttpRequest.open function
XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
//Do Your Code Here....
//Call original XMLHttpRequest.open function which is now saved in XMLHttpRequest.realOpen function
this.realOpen(method, url, async, user, password);
};
谢谢我仍然停留在
(函数(param){})(myParam)
。如何将myParam
传递给函数(function())()
这叫什么?它叫IIFE。如果这样更容易,请将它重写为函数foo(open){..};foo(XMLHttpRequest…)代码>。同样的,谢谢。我仍然停留在(函数(param){})(myParam)
。如何将myParam
传递给函数(function())()
这叫什么?它叫IIFE。如果这样更容易,请将它重写为函数foo(open){..};foo(XMLHttpRequest…)代码>。同样的,谢谢。我仍然停留在(函数(param){})(myParam)
。如何将myParam
传递给函数(function())()
这叫什么?这叫生活。如果这让它更容易,请重写