probabilmente intendeva il momento in cui dopo aver fatto questo, l'addMethod diventa disponibile per tutti gli oggetti di base
tipi di oggetti come stringa, numero ecc Questo è perché l'oggetto String è una funzione (ma oggetti creati da String non sono).
Ad esempio, dato
var s = '';
Si può fare
String.addMethod(...);
ma non
s.addMethod(...);
Una breve spiegazione del sistema di tipo JavaScript viene qui: fa
JavaScript non avere il normale concetto di classi. Invece, è possibile ottenere lo stesso risultato trasformando qualsiasi funzione in un costruttore inserendo la nuova parola chiave di fronte a esso quando viene richiamata.
es: dato
function MyFunction(x) { this.myX = x; }
se lo si richiama come
var myObj = new MyFunction(10);
creerà un oggetto chiamato myObj. Questo oggetto avrà una singola variabile membro chiamata myX. La funzione MyFunction è considerata il costruttore dell'oggetto (ed è memorizzata nella proprietà "costruttore"
(domanda bonus: cosa succederà se invochi la funzione sopra senza la nuova parola chiave, ovvero var x = MyFunction(10)
. sorprendere qualsiasi persona ragionevole)
Ora avete visto come qualsiasi funzione arbitraria può essere trasformata in un costruttore.Gli oggetti built-in sono esattamente gli stessi, gli oggetti stringa sono creati dalla funzione String, i numeri vengono creati dalla funzione Numero, ecc.
Proprio come quegli oggetti incorporati sono creati da funzioni, ciascuna di queste funzioni vengono creati anche dalla funzione "Funzione" (yikes!).
Ora su prototipi.
nell'esempio di cui sopra, se da qualche parte scrive
MyFunction.prototype.someNewMethod = function() {}
tutti gli oggetti creati dal costruttore MyFunction/funzione apparirà ad avere una funzione di membro aggiuntivo chiamato someNewMethod. Puoi fare molte altre cose funky con i prototipi, come la sostituzione del prototipo o la sostituzione del prototipo del prototipo, ma non sono un esperto in questo.
No, è l'implementazione di JavaScript del prototipo eredità che è sciocco. Il suo strano stile use-Function-as-constructor non offre nessuno dei potenziali vantaggi dei prototipi, pur essendo completamente diverso dall'ereditarietà basata sulla classe che la maggior parte dei programmatori comprende. È bello capire esattamente cosa stanno facendo i prototipi JavaScript, ma non aspettatevi un'illuminazione che renda ovvio il motivo per cui questo modello abbia un senso. Perché non è così. – bobince