Podczas dzisiejszego przeglądu kodu mój kolega powiedział coś interesującego:
prototypeprzydaje 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?)
implementssłowa kluczowego i interfejsów (w przeciwieństwie do dziedziczenia stanu i zachowanie wprowadzone za pomocą extendssłowa kluczowego w klasach zawierających dowolną implementację).
new, thisI prototypesą zbyt duże pole minowe do wspólnego użytku IMO.
prototypeto 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ćinstanceofoperatora w JavaScript:if (foo instanceof Foo) { ....