我只想替换 JavaScript 对象的“仿函数”函数。下面的代码演示了这个问题:
// PART 1: Declaration
function obj() {
return obj.a + " " + obj.b;
};
obj.a = "a";
obj.b = "b";
confirm(obj()); // output: "a b";
// PART 2: Modification
// now replace only functor
// (not working this way as it replaces the whole object)
obj = function () {
return obj.b + " " + obj.a;
};
confirm(obj()); // expected output: "b a";
我需要这个,因为我无权访问第 1 部分并且需要修改对象的功能...
有没有办法在 JavaScript 中做到这一点?
复制(例如使用 for 循环)不起作用,因为它不会复制所有隐藏的属性......
更新:修改后的代码不是未定义的......
UPDATE2:这似乎适用于这个例子:(需要jQuery)
obj = $.extend(function() { return obj.b + " " + obj.a; }, obj);
confirm(obj()); // output: "b a";
(但它并没有解决我的问题......)