Parametr get
definiuje funkcję dostępu do właściwości : . Gdy wartość nieruchomości foo
na o
są pobierane, że funkcja jest wywoływana mimo że nie wygląda jak wywołania funkcji w kodzie, np:
var a = o.foo; // Note that `foo` doesn't have() after it, it's not a function call
W tym przypadku, to zawsze zwraca 17, ale zamiast tego może zrobić coś innego. Na przykład, rozważmy koło:
var circle = {
radius: 7,
get circumference() { return 2 * Math.PI * this.radius; },
get area() { return Math.PI * this.radius * this.radius; }
};
console.log(circle.circumference); // 43.982297150257104
console.log(circle.area); // 153.93804002589985
circle.radius = 4;
console.log(circle.circumference); // 25.132741228718345
console.log(circle.area); // 50.26548245743669
Jak widać, gdy mamy dostęp do dwóch właściwości określiliśmy z akcesorów, funkcje przypisane do nich się nazywa, chociaż dostęp nieruchomość nie wygląda funkcji połączenie.
Możesz także mieć funkcje, które zostaną wywołane, gdy właściwość jest ustawiona jako. Nic dziwnego, że robisz to za pomocą set
zamiast get
. :-)
Możesz przeczytać więcej na ten temat w części dotyczącej specyfikacji object initializers i on MDN.
Wywołanie zwraca obiekt, który opisuje żądaną właściwość (w tym przypadku foo
). Możesz również przeczytać więcej na ten temat: in the spec i on MDN.
Cytowanie z MDN:
Deskryptor właściwość jest płyta (TJC: np, Przedmiotem) niektóre z następujących cech:
value
wartości związanej z obiektem (deskryptorów danych). writable
true
wtedy i tylko wtedy, gdy wartość związana z właściwością może zostać zmieniona (tylko deskryptory danych).
get
Funkcja, która służy jako getter dla nieruchomości, lub undefined
, jeśli nie ma żadnego gettera (tylko deskryptory akcesoriów).
set
Funkcja służąca jako narzędzie ustawiające właściwość, lub undefined
, jeśli nie ma programu ustawiającego (tylko deskryptory akcesoriów).
configurable
true
wtedy i tylko wtedy, gdy typ tego deskryptora właściwości może zostać zmieniony i właściwość może zostać usunięta z odpowiedniego obiektu.
enumerable
true
wtedy i tylko wtedy, gdy ta właściwość pojawia się podczas wyliczania właściwości na odpowiednim obiekcie.
Czy ta ostatnia opieka mogłaby się podzielić, dlaczego jest to "nieprzydatne"? –
Wygląda na to, o ile wiem. +1 –