Der Prototyp Eigenschaft auf Funktionen, nicht auf instanziiert Objekte existiert.
var Person = new Object();
console.log(Person.prototype); // undefined
var Person2 = function() {}
console.log(Person2.prototype); // {}
Dies ist nützlich, weil die Dinge auf dem Prototyp einer Funktion gesetzt werden mit dieser Funktion (unter Verwendung new
) erstellt von allen Objektinstanzen gemeinsam genutzt werden.
var Person = function() {};
Person.prototype.saySomething = function() {
console.log("hello");
};
console.log(
new Person().saySomething === Person.prototype.saySomething // true. they are the same function
);
Wenn alles, was Sie wollen, ist eine Methode, um die Person, Objekt hinzuzufügen, gibt es keine Notwendigkeit für einen Prototypen:
var Person = {};
Person.saySomething = function() {
console.log("hello");
};
Person.saySomething();
Sie können sogar Verwenden Sie die Objektliteralsyntax:
var Person = {
saySomething: function() {
console.log("hello");
}
};
Person.saySomething();
Warum versuchen Sie Prototyp zu benutzen? Du hast keine Klasse, du hast nur ein Objekt, also ordne einfach direkt die Methode zu: 'Person.saySomething = ...' – Bergi