Niezależnie od tego, czy używasz this
, czy nazwa funkcji zależy od sposobu wywołania funkcji.
funkcją jest wartość this
ustala, w jaki sposób funkcja jest wywoływana lub wiążą, więc jeśli funkcja będzie zawsze nazywane jako metoda odpowiedniego obiektu, użyj this
. Ale jeśli można to nazwać w inny sposób, lub this
powinien odnosić się tylko do konkretnego obiektu, użyj albo bind lub nazwy obiektu.
np.biorąc pod uwagę przykład OP, należy rozważyć:
var x = user.showName;
x();
W powyższym showName
nazywa bez jego ustawienie this
, więc domyślnie globalnego obiektu i this.name
wewnątrz funkcji będzie prawdopodobnie nie być czego oczekuje.
Zmiana nazwy funkcji nie jest szczególnie uciążliwym problemem, biorąc pod uwagę dostępność rozsądnie wydajnych funkcji wyszukiwania i zamiany w edytorach tekstu.
Nawiasem mówiąc, to pytanie jest często zadawane. Nie ma "poprawnej" odpowiedzi, tylko porady, jak dokonywać wyborów w niektórych przypadkach.
Zauważ, że mogą wystąpić inne efekty uboczne przy użyciu 'this':' user.show_name.call (null); ' – David