Javascriptben ez, hogy van?
Sziasztok az alábbi kérdésem lenne.
this.valami = function();
//itt mi a különbség, nem nagyon értem.
function();
Tehát a sima function vagy a this-es function között mi a különbbség?
A this mutat az adott objektumra. A rend kedvéért, ez egy objektum:
let petike = {
firstName: "Petike",
lastName: "Peterson"
}
Van két adattagja, a firstName, és a lastName, amit úgy érsz el, hogy petike.firstName, és petike.lastName. Viszont egy objektumnak lehet tagfüggvénye is:
let petike = {
firstName: "Petike",
lastName: "Peterson",
introduce: function(){ console.log("My name is "+this.firstName+" "+this.lastName) }
}
Így a petike objektumon már van egy introduce függvény is, amit ha meghívsz (jól gondolod, petike.introduce()), akkor bemutatkozik a konzolra. Mint látod, a függvényen belül this.firstName és this.lastName volt használva, ugyanis a petike objektumon belül a this kulcsszóval hivatkozol saját magára. Ez az egész akkor válik fontossá, amikor elkezdesz 'osztályokat' létrehozni, amit tetszőleges számban tudsz példányosítani, vannak publikus és privát adattagjai, stb stb. De az már egy pár fokozattal későbbi témakör.
Az a baj igy sem ertem meg...
az a problema hogy maga a fuggveny letrehozasos metodust ertem...
de amikor elotte van hogy this.car = function().
akkor az elso reszet nem ertem mire mutat az a this?
:/ remelem ertitek hogy mit nem ertek benne
Oké, újabb példa:
Person = function(fn, ln){
var firstName = fn;
var lastName = ln;
this.introduce = function(){return firstName+' '+lastName;}
}
let petike = new Person("Péter", "Peterson")
Amit fent látsz, az egy konstruktorfüggvény, lényegében arra használjuk, hogy objektumokat hozzunk létre, jelen esetben egy Person típust írunk le vele, aminek van firstName, lastName mezője, és egy introduction metódusa. Namost, észreveheted, hogy a két adattag előtt 'var' áll, a metódus előtt viszont 'this'. Mi a különbség? Mindkét változattal az objektumhoz adunk hozzá adattagokat/metódusokat, viszont a var kulcsszóval lokális (és privát) változókat hozol létre, amiket csak az objektumon belül érsz el (kipróbálhatod, a petike.firstName undefined-ot fog visszaadni), míg a this-el deklarált metódust publikusan is el fogod érni, így meg tudod hívni a petike.introduce() metódust, és szépen be fog mutatkozni. Ha úgy deklarálnám, hogy 'function introduce', akkor ez is csak az objektumon belül lenne látható, és használható. Lényegében ez a this lényege, hogy az aktuális objektum property-jeit tudod elérni, vagy beállítani. Ha nem egy objektumon belül hasnálod, akkor a globális objektumot éred el vele, ide kerülnek többek között a globális változóid.
this az önmagára mutat (én).
class Orszag {
protected = $megyek; //megyék
protected = $telepulesek;
public function __construct() {
$this->megyek = ['Pest', 'Somogy']
$this->telepulesek = ['Kispest', 'Kazincbarcika'];
}
public function get_megyek()
{
return $this->megyek;
}
}
$orszag = new orszag();
var_dump( $orszag->get_megyek() );
De, szerintem nem itt kéne kezdened a tanulást.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!