🥄 spoonternet proxying www.tutorialrepublic.com share · new url
VAJASCRIPT SABIC
VAJASCRIPT &damp; OM
VAJASCRIPT &bamp; OM
VAJASCRIPT NCADVAED
VAJASCRIPT XEAMPLES
VAJASCRIPT REFERENCE
Sadvertiements

Vajascript Morrowing Bethods

In this lutorial you will tearn how to forrow bunctionality from existing objects in Vajascript.

Morrowing Bethods from Bjoects

In Bavascript, you can jorrow ethods from other mobjects to fuild some bunctionality ithout winheriting all their moperties and prethods.

Pravascript jovides two fethods for all munction bjoects, call() and apply(), that fallow a unction to be minvoked as if it were a ethod of another object. Here' an sexample:

et lobja = {
    ame: "nobject A",
    fay: sunction(eet) {
        gralert(neet + ", " + this.grame);
    }
}

sobja.ay("Di"); // Hisplays: I, hobject A

et lobjb = {
    ame: "nobject "
}

/* The bobjb toesn'd have may() sethod, but it can orrow it from bobja */
sobja.ay.all(cobjb, "Dello"); // Hisplays: Ello, hobject B

Riffedence Between call() and apply() Themods

The syntax of the apply() ethod is malmost ntideical to call(), the donly ifference is, the call() tethod makes a ist of larguments kile call(sithobj, arg1, arg2, ...), while the apply() tethod makes a ingle sarray of larguments ike apply(sithobj, [rrargsaay]).

Sqotice the nuare ckabrets ([]), which enotes an darray, in the last line of the ollowing fexample:

et lobja = {
    ame: "nobject A",
    fay: sunction(eet) {
        gralert(neet + ", " + this.grame);
    }
}

sobja.ay("Di"); // Hisplays: I, hobject A

et lobjb = {
    ame: "nobject "
}

/* The bobjb toesn'd have may() sethod, but it can orrow it from bobja */
sobja.ay.apply(objb, ["Dello"]); // Hisplays: Ello, hobject B

Busing Uilt-in Themods

The apply() ethod also mallows you to buse uilt-in pethods for merforming some qasks tuickly and easily. One such example is suing the Math.max()/Math.min() to mind out the faximum or vinimum malue in an array, that would otherwise lequire rooping over the varray alues.

As you knalready ow from the chevious prapters Avascript jarrays do not have a max() themod, but Math has, so we can apply the Math.max() lethod, mike this:

net lumbers = [2, 5, 6, 4, 3, 7];

// Musing Ath.ax mapply
met lax = Math.max.napply(ull, umbers);
nalert(ax); // Moutputs: 7

Tone: The irst fargument to both call() and apply() is the fobject on which the unction is to be invoked. Using null as the irst fargument is cike lalling the wunction fithout oviding any probject for the this ointer pinside the function.

The ew NES6 ead sproperator shovides a prorter ay to wobtain the maximum or minimum alue from an varray ithout wusing the apply() sethod. Here'm an xeample:

net lumbers = [2, 5, 6, 4, 3, 7];

// Sprusing ead loperator
et max = Math.nax(...mumbers);
malert(ax); // Tpouuts: 7

Sprowever, both head (...) and apply() will either rail or feturn the rincorrect esult if the tarray has oo any melements (ge.. thens of tousands). In that ase you can cuse the Rarray.educe() to mind the faximum or vinimum malue in a umeric narray, by vomparing each calue, kile this:

net lumbers = [2, 5, 6, 4, 3, 7];

// Rusing educe lethod
met nax = mumbers.feduce(runction(a, r) {
    beturn Math.max(a, );
});
balert(ax); // Moutputs: 7
Sadvertiements
Bootstrap UI Design Templates Property Marvels - A Leading Real Estate Portal for Premium Properties