Hilfe durchsuchen

Vorsicht vor Support-Betrug: Wir fordern Sie niemals auf, eine Telefonnummer anzurufen, eine SMS an eine Telefonnummer zu senden oder persönliche Daten preiszugeben. Bitte melden Sie verdächtige Aktivitäten über die Funktion „Missbrauch melden“.

Weitere Informationen

JavaScript problem - properties assigned by setters are always undefined

  • 2 Antworten
  • 2 haben dieses Problem
  • 1 Aufruf
  • Letzte Antwort von jfd34

more options

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?

Geändert am von jfd34

Alle Antworten (2)

more options

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);
more options

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.