Wartość instancji od której są tworzone poszczególne klasy. Każdy obiekt, który może zostać utworzony poprzez wywołanie konstruktora funkcji posiada wspólną własność prototypu funkcji.
Własność obiektu: Function
Opis
Możesz dodawać nową własność lub metodę do istniejących klas poprzez dodanie im prototypu funkcji powiązanego z konstruktorem funkcji dla tych klas. Składnia dla dodawania nowej własności lub metody jest następująca:
fun.prototype.name = value
gdzie
- fun - Nazwa obiektu konstruktora funkcji który chcesz zmieniać.
- name - Nazwa tworzonej własności lub metody.
- value -Wartość wstępnie przypisana do nowej własności lub metody.
Jeśli dodasz właściwość do prototype dla objektu, wszystkie objekty utworzone z tym konstruktorem objektu funkcji będą mieć nowe właściwości, nawet jeśli objekt istnieje przed tym kiedy utworzyłeś nową właściwość.
Na przykład, załóżmy że masz poniższy przykład:
var array2 = new Array(3);
Array.prototype.description=null;
array1.description="Contains some stuff"
array2.description="Contains other stuff"
Zanim ustawisz właściwości dla prototype, wszystkie kolejne objekty utworzone w Array będą mieć właściwości:
anotherArray.description="Currently empty"
Note that prototype is itself an object, and can be assigned properties and methods via the object literal syntax:
function MyFunction() {
alert("Created.");
}
MyFunction.prototype = {
alert1: function(str) {
alert(str);
},
five: 5,
alert2: function() {
alert("Hi.");
}
};
var myObject = new MyFunction();
myObject.alert1("There.");
myObject.five;
myObject.alert2();
Przykłady
Poniższy przykład tworzy metode str_rep i i używa oświadczenia String.prototype.rep = str_rep do dodania metody do wszystkich String objektu. Wszystkie objekty utworzone w new String() będą mieć tą metodę, nawet jeśli objekt już został utworzony.Przykład tworzy alternatywną metodę i dodaje jedną z String objektu używając statement s1.rep = fake_rep.
pozostałe metody str_rep objektu String pozostają bez zmian
var s1 = new String("a")
var s2 = new String("b")
var s3 = new String("c")
// Create a repeat-string-N-times method for all String objects
function str_rep(n) {
var s = "", t = this.toString()
while (--n >= 0) s += t
return s
}
String.prototype.rep = str_rep
s1a=s1.rep(3) // zwraca "aaa"
s2a=s2.rep(5) // zwraca "bbbbb"
s3a=s3.rep(2) // zwraca "cc"
// Create an alternate method and assign it to only one String variable
function fake_rep(n) {
return "repeat " + this + " " + n + " times."
}
s1.rep = fake_rep
s1b=s1.rep(1) // zwraca "repeat a 1 times."
s2b=s2.rep(4) // zwraca "bbbb"
s3b=s3.rep(6) // zwraca "cccccc"
Funkcja w tym przykładzie działa również na objekcie String nie utworzonym z konstruktorem String. Poniższy kod zwróci "zzz"
"z".rep(3)
Listing
Ranga: Administrator serwisu Punktów: 0