Przeszukaj pomoc

Unikaj oszustw związanych z pomocą.Nigdy nie będziemy prosić Cię o dzwonienie na numer telefonu, wysyłanie SMS-ów ani o udostępnianie danych osobowych. Zgłoś podejrzaną aktywność, korzystając z opcji „Zgłoś nadużycie”.

Więcej informacji

JavaScript problem - properties assigned by setters are always undefined

  • 2 odpowiedzi
  • 2 osoby mają ten problem
  • 5 wyświetleń
  • Ostatnia odpowiedź od 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?

Zmodyfikowany przez jfd34 w dniu

Wszystkie odpowiedzi (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.