JavaScript problem - properties assigned by setters are always undefined
Consider this JavaScript code:
function foo(x) { var obj = { set a(val) { document.write('Setting obj.a to ' + val + '\r\n'); } }; obj.a = x; return obj.a + 2; }
var n = foo(3);
The value of n will be NaN instead of the expected 5.
Is this a bug in Firefox or there is something wrong with the JavaScript code itself?
Consider this JavaScript code:
function foo(x) {
var obj = {
set a(val) { document.write('Setting obj.a to ' + val + '\r\n'); }
};
obj.a = x;
return obj.a + 2;
}
var n = foo(3);
The value of n will be NaN instead of the expected 5.
Is this a bug in Firefox or there is something wrong with the JavaScript code itself?
Modified
All Replies (2)
This at least works.
function foo(x) { var obj = { set aValue(val){ this.a=val; } }; obj.a = x; return (obj.a + 2); } var n = foo(3); alert(n);
It is obvious why the code given by cor-el will work. The setter function is not called at all. It is similar to this:
function foo(x) { var obj = {}; obj.a = x; return (obj.a + 2); } var n = foo(3); alert(n);
I want something which sets a property of an object using a setter function, and then retreives the value of that property.