假设我有一个obj,
var obj = {
l:function(){
alert(1);
}
}
如何在不编辑obj的情况下向obj.l添加更多功能?
答案 0 :(得分:3)
没有编辑obj?
如果您的意思是不修改对象,则不能。如果您的意思是不编辑对象的源代码,您可以在开头和/或结尾添加功能,但不能在中间添加功能。
(function() {
var original = obj.l;
obj.l = function() {
var retval;
// You can do something here
// Call the original
retVal = original.apply(this, arguments);
// You can do something here
// Return result
return retVal;
};
})();
这里的作用域功能只是为了避免使original
可用于任何其他代码。
调用原始文件的示例将使用相同的this
和调用包装器的参数列表来调用它。当然,您可以通过Function#call
代替Function#apply
来传递不同的参数。