Podczas dzisiejszego przeglądu kodu mój kolega powiedział coś interesującego:
prototype
przydaje się tylko wtedy, gdy potrzebujesz dziedziczenia - a kiedy dziedziczenie jest zawsze dobrym pomysłem ?
Pomyślałem o tym i zdałem sobie sprawę, że zwykle używam dziedziczenia, aby obejść kod, który został źle zaprojektowany. Współczesny styl OO woli kompozycję niż dziedziczenie, ale nie znam żadnych języków, które wzięłyby to sobie do serca i faktycznie je egzekwowały .
Czy istnieją języki programowania ogólnego przeznaczenia z klasami, obiektami, metodami, interfejsami itp., Które nie pozwalają na dziedziczenie oparte na klasach? (Jeśli taki pomysł nie ma sensu, dlaczego nie?)
implements
słowa kluczowego i interfejsów (w przeciwieństwie do dziedziczenia stanu i zachowanie wprowadzone za pomocą extends
słowa kluczowego w klasach zawierających dowolną implementację).
new
, this
I prototype
są zbyt duże pole minowe do wspólnego użytku IMO.
prototype
to również przydatne, gdy masz publiczne metody i właściwości, które powinny być współużytkowane między instancjami. Jest to także przydatne, ponieważ pozwala właściwie używaćinstanceof
operatora w JavaScript:if (foo instanceof Foo) { ...
.