2016-05-11 18 views
5

Chcę wiedzieć, czy dynamiczne przedłużanie prototypu funkcji to zła praktyka. Rozważam to za pomocą statycznej metody, która otrzymuje nazwę właściwości i funkcję do dodania do prototypu.JavaScript: czy dynamiczne przedłużanie prototypu jest złą praktyką?

Czy to jest zła praktyka?

+7

Tylko jeśli nadużyjesz go do punktu, w którym utrudnienie śledzenia jest trudne (co, szczerze mówiąc, zwykle się dzieje). Osobiście wolę nie osiągać tego poziomu meta w moim programowaniu. –

+0

To jest zła praktyka, ponieważ twój kod nie działa :-) Musiałby to być 'task' zamiast' this.task' i powinien być skrócony do 'this.prototype [id] = task;' – Bergi

+0

I ' nie jestem pewien, ale myślę, że są pewne problemy z wydajnością z '.apply'. – Rajesh

Odpowiedz

0

Powiedziałbym, że jest to zła praktyka w tym przypadku, ponieważ nie masz żadnej kontroli nad tym, czy dodana metoda zostanie usunięta z klasy.

var test = new Test(); 
test.extend("example", function() { 
    console.log("First Method"); 
}); 

test.extend("example", function() { 
    console.log("Second Method"); 
}); 

Z tego, jak wygląda twój kod, nie masz możliwości dowiedzenia się, kiedy pierwsza metoda zostanie zaabsorbowana, a co za tym idzie, złamanie kodu.

+0

Cóż, można to rozwiązać, sprawdzając metody dodane do prototypu przed dodaniem nowego. Ale jeśli masz tę kontrolę, przedłużenie prototypu w ten sposób jest złą praktyką? – javascripter

Powiązane problemy