Kezdőoldal » Számítástechnika » Programozás » Hogyan tudok objektum. Funkció...

Hogyan tudok objektum. Funkció () ; féle funkciót létrehozni?

Figyelt kérdés

Jelenleg van egy ilyenem:

function valami(obj, param){


}

valami(kivalasztottObjektum, parametereim);


és ezt szeretném átalakítani ilyenre:

kivalasztottObjektum.valami(parametereim);


2017. júl. 24. 21:15
 1/10 A kérdező kommentje:
Pardon, javascriptről van szó. A végére akartam írni, csak lemaradt.
2017. júl. 24. 21:22
 2/10 anonim ***** válasza:
2017. júl. 24. 21:24
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:

Saját objektumról van szó? Ha igen, akkor:


objektum.valami = function(parameter) { ... }


Ha pedig osztály, vagy konstruktorfüggvény példánya, tehát úgy hozod létre, hogy "new Tipus()", akkor:


Tipus.prototype.valami = function(parameter) { ... }


Ha nem saját objektum, hanem egy külső modulból származik, vagy beépített, akkor azt nem szabad módosítani, mert nehezen kideríthető hibákat, logikátlannak tűnő viselkedést eredményezhet. Ebben az esetben jobb megoldás az általad elsőként felírt forma.


Vannak library-k, amik lehetőséget adnak a funkcióik kiterjesztésére, pl a jquery a következőképp oldja meg:


$.fn.helloWorld = function() { console.log("hello world"); };

$("valami").helloWorld(); // kiírja, hogy hello world


Erről viszont részleteket mindig a készítő weboldalán, github oldalán, npm oldalán keress.

2017. júl. 24. 21:32
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:
Köszönöm a gyors válaszokat! Végül a 2. válaszoló jQuery megoldásánál maradtam, az tűnt a legegyszerűbbnek. A prototype-nak meg majd utána nézek, hogy pontosan mi is, talán még hasznomra lesz.
2017. júl. 24. 22:18
 5/10 anonim ***** válasza:

Ez egy olyan dolog, amit objektumorientált programozásnak nevezünk. Csapj fel egy jóféle leírást és nyálazd át. Mondjuk ezt:

[link]

2017. júl. 24. 22:32
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
2017. júl. 24. 22:43
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
#5 Igaz, de JavaScriptben ez picit máshogy működik, ott az object prototype a szíve-lelke a dolognak. Sure, ES6 óta Javascriptben is van class, meg constructor, meg anyámkínja, de ez mind csak egy absztrakció a tényleges objektum szerkezetre, ami az Object prototype-ra épül.
2017. júl. 25. 01:37
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:

Kérdező: a javascript prototype alapú öröklődést használ, ami azt jelenti, hogy az objektumok nem osztályokból örökölnek, hanem van egy hivatkozásuk egy másik objektumra, ami prototípusként van megjelölve.


Természetesen a prototype-nak is lehet prototype-ja, ha pedig nincs megadva, akkor az Object.prototype lesz az alapértéked (itt van definiálva pl a toString függvény).


Ha egy property-t szeretnél elérni egy objektumon, azt saját magán keresi első körben. Ha nem találja meg, akkor elindul felfelé a prototype láncon, ameddig megtalálja, vagy végigér (Object.prototype prototype-ja null), ilyenkor undefined lesz a property értéke.


Minden függvénynek van egy "prototype" nevű propertyje. Ez nem a függvény prototype-ja, csak egy sima property. Viszont annyiban mégis különleges, ha a függvényt konstruktorként használod, és new-val hozol létre egy példányt belőle, akkor ez a "prototype" nevű property lesz az új objektumod prototype-ja.


function Valami(x) { this.x = x; }

Valami.prototype.hello = function () { console.log("Hello,", this.x); };


var valami = new Valami("world");

valami.hello(); // kiírja, hogy Hello world

2017. júl. 25. 06:43
Hasznos számodra ez a válasz?
 9/10 sharkxxx ***** válasza:

// Az osztály konstruktora.

function Osztaly() {

  this.value = ""; // Az osztály változója.


  // Az osztály egyik funkciója.

  this.setValue = function(val) {

    this.value = val;

  };


  // Az osztály másik funkciója.

  this.printValue = function() {

    document.write(this.value);

  };


}


var objektum = new Osztaly(); // Új objektum létrehozása.

objektum.setValue("Hello world!");

objektum.printValue();

2017. júl. 25. 15:10
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:

sharkxxx: ez félrevezető, mert az nem osztály, hanem konstruktorfüggvény. JS-ben nincsenek olyan osztályok, mint pl Java-ban vagy C#-ban, rengeteg probléma származik abból, ha mégis megpróbáljuk ráerőszakolni az ott teljesen helytálló patterneket.


Persze attól még rendben van, ha konstruktorfüggvényekkel, vagy ES6 "osztályokkal" hozunk létre objektumokat, csak nem szabad elfelejteni, hogy azok nem classical OOP osztályok.

2017. júl. 26. 09:25
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!