In che senso la complessità delle gerarchie di classi è motivata dal controllo di tipo statico?

1

Ad esempio, dal libro JavaScript: The Good Parts , mi sono imbattuto in questo passaggio:

Much of the complexity of class hierarchies is motivated by the constraints of static type checking. JavaScript is completely free of those constraints. In classical languages, class inheritance is the only form of code reuse.

Quindi qual è la relazione tra la tipizzazione statica e le gerarchie di classi?

    
posta Nick M. 07.05.2016 - 09:22
fonte

1 risposta

1

In JavaScript, le variabili (e gli oggetti) possono cambiare tipo.

myVar = 'A mere string';
myVar.size = 'big'; // now it is an object with its own properties
myVar.doIt = function(){ /*whatever*/ }; //it even has methods
myVar.prototype.style = 'funky'; // and now its own distinct prototype;
myVar = 9; //nope, it is just a number after all

Questo è l'opposto del controllo di tipo statico.

Un oggetto ha molti modi di ereditare da un altro oggetto senza essere costretto ad appartenere alla stessa classe. In realtà, l'intero concetto di classe è estraneo a JavaScript.

Ciò rende la massima flessibilità. Puoi avere un migliaio di oggetti che condividono le stesse proprietà e il medesimo comportamento, e un mille-prima con un qualcosa in più, senza l'ingombrante necessità di alterare la classe superiore e di incidere sui primi mille.

Certo, a volte può essere fonte di confusione. Se, come la maggior parte di noi, vieni da uno sfondo di programmazione OO strongmente tipizzata come Java, ti troverai nella posizione di disimparare parte di ciò che conosci.

Vedi anche Object.assign () per un suggerimento di ereditarietà senza classi.

Un ultimo consiglio: JavaScript: Good Parts è un eccellente libro di un autore eccellente. È anche molto compatto, confinante o addirittura apparentemente criptico. Non aspettarti di capire tutto in una volta. È il tipo di libri che tieni a portata di mano e continui a tornare a quando la tua esperienza cresce.

    
risposta data 07.05.2016 - 12:54
fonte

Leggi altre domande sui tag