我想只替换JavaScript对象的“函子”函数。下面的代码演示了此问题:只替换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循环)不工作,因为它不会复制所有的隐藏属性...
UPDATE:修改后的代码,它不是不确定的......
UPDATE2:这似乎在这个例子中工作:(需要jQuery的)
obj = $.extend(function() { return obj.b + " " + obj.a; }, obj);
confirm(obj()); // output: "b a";
(但是它并没有解决我的问题...)
对于所有浏览器,它是未定义的undefined – 2013-05-07 08:06:39
没有JavaScript对象,只是一个函数。 'a'和'b'是函数的属性,没有包含它们的对象。 – Barmar 2013-05-07 08:12:25
你可以发布你试过的“for-loop”代码吗? – Dogbert 2013-05-07 08:14:02