var foo = {
name: 'Foo',
age: '12',
przedstaw_sie: function() {
alert(this.name + " " + this.age);
}
}
alert(foo.name);
foo.przedstaw_sie();
function Person(){
this.name = 'Foo2';
this.age = '12';
this.przedstaw_sie = function() {
alert(this.name + " " + this.age);
};
}
var foo2 = new Person();
Person.prototype.przedstaw_sie_zw = function() {
alert(this.name + " " + this.age + " prototype");
}
alert(foo2.name);
foo2.przedstaw_sie();
foo2.przedstaw_sie_zw();
Witam. Jestem w trakcie nauki js i zastanawia mnie kilka rzeczy związanych z klasami, konstruktorami itp.
O ile dobrze rozumuję, to tworząc foo
tworzę obiekt, z konkretnymi parametrami i to wszystko. Jest to zwykły obiekt. W drugim przypadku foo2
korzystam z konstruktora, więc mam możliwość stworzenia kilku obiektów, w odróżnieniu od foo
. To oznacza, że funkcja (w tym wypadku Person) w js to tak jakby klasa zgadza się? W takim razie czym jest foo
, co się dzieje w momencie takiego przypisania?
Dlaczego w foo
trzeba skorzystać z :
, a w function Person()
z =
?
Czy powinienem traktować funkcję konstruktor tak jak klasy w innych językach i wrzucać tam również metody, czy skorzystać z prototype
? Podobno prototype jest lepsze ze względu na zużycie pamięci.