- Imisebenzi yomcibisholo yenza kube lula ukuhlelwa kwemisho futhi ibamba ngolimi inani `leli`, ngokungafani nemisebenzi evamile.
- I-JavaScript inquma `lokhu` emisebenzini yakudala ngemithetho emine: ukubopha okucacile, ukubopha okungabonakali, ukubopha okune-`okusha`, kanye nokubopha okuzenzakalelayo.
- Imisebenzi yomcibisholo ilungele ama-callback kanye nekhodi engavumelani, kodwa akufanele isetshenziswe njengezindlela ezincike ku-`this` noma njengabakhi.
- Ukwazi ukusebenzisa imisebenzi evamile, imisebenzi yomcibisholo, kanye namasu afana ne-call, apply, kanye ne-bind kubalulekile ekubhaleni i-JavaScript yesimanje neqinile.
Ukwazi kahle imisebenzi yomcibisholo kanye nokuziphatha kwe-`this` ku-JavaScript kuyishintsha kakhulu amakhono akho okuthuthukisa. Lezi zihloko ezimbili zingase zibonakale zidida ekuqaleni, kodwa uma usuziqonda, uzoqala ukuqaphela amaphutha owawaphuthelwa ngaphambilini, ubhale ikhodi ecacile, futhi ubhekane nobunzima obuncane ngomongo.
Kulesi sihloko, sizobheka ngokucacile nangokuqondile ukuthi singabhala kanjani imisebenzi yomcibisholo, ukuthi ihluke kanjani emisebenzini evamile, nokuthi lokhu kuthinta kanjani `this` . Sizophinde simboze imiqondo ebalulekile efana ne-`call`, `apply`, `bind`, ukusetshenziswa kwe-`new`, izinhlobo ezahlukene zokubopha kwe-`this`, indlela eziphatha ngayo emakilasini, imicimbi, ama-callback, izindawo ezifana ne-React kanye ne-Node.js, nokuthi kunengqondo nini ukusebenzisa noma ukugwema imisebenzi yomcibisholo.
I-syntax eyisisekelo yemisebenzi yomcibisholo
Umsebenzi womcibisholo ubhalwa kusetshenziswa uphawu => futhi uhlala uyisenzo somsebenzi , okungukuthi, awumenyezelwa ngegama lomsebenzi (), kodwa unikezwa i-variable noma impahla.
Ifomu elijwayelekile lifana naleli: const myFunction = (param1, param2) => { /* code */ } . Njengomsebenzi ongaziwa wakudala, kodwa ukufaka esikhundleni umsebenzi wegama ngomcibisholo => nokugcina ama-parentheses amapharamitha kanye nama-braces ajikajikayo omzimba.
Kubalulekile ukuqonda ukuthi imisebenzi yomcibisholo ayizona izimemezelo zomsebenzi : awukwazi ukuyisebenzisa ngaphambi kokuyichaza ngoba ayiphakanyisiwe (akukho ukuphakamisa ngendlela efanayo negama lomsebenzi ()). Ihlala iziphatha njengezinkulumo ezihlolwayo lapho umhumushi edlula lowo mugqa.
Izinqamuleli ze-syntax: izinguqulo ezimfushane zemisebenzi yomcibisholo
Uma ikhodi engaphakathi komsebenzi ilula kakhulu, imisebenzi yomcibisholo ivumela i-syntax emfushane nefundekayo . Uma umzimba unesitatimende esisodwa kuphela futhi leso sitatimende siyi-return, izinto eziningana zingashiywa:
- Igama lingasuswa umsebenzi (Eqinisweni sesivele sikususile).
- Zingasuswa okhiye { }.
- Leli gama lingashiywa ukubuya, kusetshenziswa i-inside return.
Isibonelo, esikhundleni sokubhala isamba esifana nokuthi `const sum = function(a, b) { return a + b; }` , ngomcibisholo ungasishiya njengo `const sum = (a, b) => a + b;` . Umphumela uyafana, kodwa ikhodi imfushane futhi ifundeka kangcono, ikakhulukazi kuma-callback kanye nezindlela ze-array.
Amapharamitha emisebenzini yomcibisholo
Imithetho yamapharamitha iyashintsha kancane nge-syntax, futhi kubalulekile ukuyiqonda ngoba amaphutha ayisiwula avamile ekuqaleni:
- Ipharamitha eyodwaUngasusa omakaki bese ubhala into efana nale igama => `Sawubona ${name}`Kusebenza kahle futhi kuvame kakhulu.
- Amapharamitha ayi-zero: omakaki baphoqelekile lapho, njengoba udinga okuthile ngaphambi komcibisholo: () => console.log('Azikho izinhlaka').
- Amapharamitha amabili noma ngaphezuluUdinga futhi ama-parentheses, isibonelo (a, b, c) => a * b * c.
Kuzo zonke izimo, uma umzimba womsebenzi wehliswa waba yinto elula, ungasebenzisa ithuba le- implicit return bese ususa ama-braces kanye ne- return , okuwusizo kakhulu ezindleleni ezifana ne- map, filter, reduce noma emisebenzini emincane yokuguqula.
Ukubuyiselwa okungabonakali kanye nokubuyiselwa kwezinto
Uma umsebenzi womcibisholo unesimo esisodwa, inani laleso sisho libuyiselwa ngokuzenzakalelayo uma ungasebenzisi ama-curly braces. Kodwa uma ufuna ukubuyisela into yangempela, kukhona icebo elibalulekile: kufanele ugoqe into ngama-bracket.
Uma ubhala into efana nethi `const crearUsuario = (nombre, edad) => { nombre: nombre, edad: edad }` , iJavaScript ihumusha ama-curly braces njengomzimba womsebenzi, hhayi njengento okufanele ibuyiselwe, ngakho ayibuyisi lutho (olungachazwanga). Ukuze isebenze, kumele ubhale ukuthi `const crearUsuario = (nombre, edad) => ({ nombre, edad })`.
Ngamafuphi, noma nini lapho umsebenzi wakho womcibisholo udinga ukubuyisela into kumugqa owodwa , songa leyo nto ngama-bracket ukuze injini iqonde ukuthi iyinani elibuyiselwe hhayi ibhlogo lekhodi.
Umehluko obalulekile phakathi kwemisebenzi evamile kanye nemisebenzi yomcibisholo
Ngale kwe-syntax, okubaluleke kakhulu ekusetshenzisweni kwansuku zonke ukuthi imisebenzi yomcibisholo ayiziphathi ngendlela efanayo nemisebenzi "ejwayelekile" ezicini eziningana ezibalulekile : `lokhu`, izimpikiswano, ukusetshenziswa njengezindlela, abakhi, njll.
Ukusingatha lokhu emisebenzini evamile
Kumsebenzi wakudala, inani elithi `this` lincike ekutheni umsebenzi ubizwa kanjani , hhayi lapho uchazwa khona. Lo mehluko uwumthombo wokudideka okukhulu.
- Uma ubiza umsebenzi ofana indlela ye-obj()Ngaphakathi kwaleyo ndlela, lokhu kukhomba ku-obj (ukubopha okungabonakali).
- Uma ubiza umsebenzi owodwa, i-myFunction(), ngaphandle kwento engaphambili, kumodi engeyona eqondile lokhu kuzoba yinto yomhlaba wonke (iwindi kusiphequluli) futhi kumodi eqondile ngeke ichazwe.
- Uma usebenzisa i-MyFunction entsha (), bese kuthi ngaphakathi kwe-MyFunction, lokhu kuzoba yinto entsha edaliwe (ebopha nge-new).
- Uma usebenzisa shayela, faka isicelo noma bophaUngakudlulisa ngokusobala ukuthi ufuna kube yini into oyifunayo.
Lolu hlobo oluguquguqukayo lwenza ukuthi `lokhu` kube namandla kakhulu, kodwa futhi kube lula kakhulu ukukuhlukanisa kube ama-callback kanye nekhodi engahambisani uma ungacaci ukuthi umsebenzi ngamunye ubizwa kuphi.
Ukuphathwa kwesichazamazwi "kwalokhu" kwimisebenzi yomcibisholo
Imisebenzi yomcibisholo ishintsha ngokuphelele imithetho: ayinayo eyayo ethi `this` . Esikhundleni sokuthola `this` entsha kuye ngegama layo, ithwebula `this` yendawo lapho yadalwa khona, ebizwa ngokuthi `this` yesichazamazwi.
Lokhu kusho ukuthi, ngaphakathi komsebenzi womcibisholo, `this` ifana ncamashi ne-`this` eyayisendaweni lapho umsebenzi uchazwe khona . Ayithinteki indlela ebizwa ngayo noma yi-`call/apply/bind`. Lesi sici sibaluleke kakhulu ekubhekaneni nezindlela ze-array, `setTimeout`, `setInterval`, izithembiso, nanoma yisiphi isimo lapho kwadingeka khona ukuthi ushintshe i-`self = this` noma `bind`.
Imithetho emine eyinhloko `yalokhu` ku-JavaScript
Ukuze uqonde ngokugcwele ukuthi kungani imisebenzi yomcibisholo iwusizo kangaka, kubalulekile ukuqonda ukuthi iJavaScript inquma kanjani inani `leli` emisebenzini ejwayelekile . Kunemithetho emine eyisisekelo, esetshenziswa kulolu hlelo lokubaluleka:
- Ukubopha Okucacile: uma usebenzisa i-call, apply noma bind ukulungisa lokhu.
- Ukubopha okungabonakali: uma ubiza indlela njengempahla yento (obj.method()).
- Ukuhlanganisa okusha: uma ubiza umsebenzi nge- new, uwuguqula ube umakhi.
- Ukubopha Okuzenzakalelayo: uma kungekho okunye okungenhla okusebenzayo (okuphelele noma okungachazwanga kuye ngemodi).
Umcibisholo usebenza "ngokudlula" lolu hlelo: abahlanganyeli kule mithetho ngoba abakaze bakhe eyabo `le` . Bamane bazuze leyo ekhona kukhodi ezungezile.
Ukubopha okusobala: shayela, sebenzisa bese ubopha
Imisebenzi evamile ikuvumela ukuthi uphoqe inani `leli` usebenzisa izindlela ezintathu ezaziwayo: `call`, `apply`, kanye `bind` . Lezi ziyisisekelo sokuqonda imodeli yakudala kanye nokuyiqhathanisa nokuziphatha kwemisebenzi yomcibisholo.
shayela bese ufaka isicelo: sebenzisa nge-custom `this`
Kokubili i-`call` kanye ne-`apply` kusetshenziselwa ukubiza ngokushesha umsebenzi one-`this` ethile . Umehluko usekutheni udlulisa kanjani izimpikiswano: i-`call` izithola ngayinye ngayinye, kuyilapho i-`apply` ithola uhlu.
Isibonelo, uma unomsebenzi obingelela usebenzisa i-`this.name`, ungawubiza lowo msebenzi ngezinto ezahlukene bese usebenzisa kabusha i-logic. Lokhu kuvamile kakhulu uma ufuna ukwabelana ngemisebenzi phakathi kwezinto ngaphandle kokuphinda ikhodi.
bopha: dala umsebenzi omusha nge-`this`
I-`bind` isebenza ngendlela ehlukile: esikhundleni sokuyisebenzisa ngokushesha, ibuyisela umsebenzi omusha lapho i-`this` "inamathiselwe" entweni oyidluliselayo . Ngaphezu kwalokho, ungasetha izimpikiswano kusengaphambili (uhlelo lokusebenza oluyingxenye), ngakho umsebenzi ophumelayo usuvele uza namapharamitha athile achazwe ngaphambilini.
Kuwusizo kakhulu uma ufuna ukudlulisa izindlela njenge-callbacks ngaphandle kokulahlekelwa umongo wazo wokuqala , isibonelo kubalaleli bemicimbi noma ku-setInterval, lapho `lokhu` kuvame ukuphulwa khona.
Imininingwane ebalulekile ukuthi umsebenzi osuvele uboshwe nge-`bind` uyayishaya indiva imizamo elandelayo yokushintsha i-`this` nge-`call` noma i-`apply` . Ukubopha kungunaphakade kulowo msebenzi osuselwe kuwo.
Ukubopha okusobala kanye nokulahlekelwa komongo
Ukubopha okungabonakali kwenzeka uma ubiza umsebenzi njengendlela yento ; okungukuthi, kukhona okuthile ngakwesobunxele sechashazi. Kuleso simo, `le` iba yileyo nto.
Isibonelo, uma unento yokudlela enezindlela ze-welcomeGuest kanye ne-cookPizza, uma wenza i-restaurant.welcomeGuest() , ngaphakathi kwale ndlela ikhomba indawo yokudlela uqobo, ikuvumela ukuthi ufinyelele izakhiwo ezifana negama noma indawo.
Inkinga iqala uma uhlukanisa indlela ku-object , isibonelo, ngokuyidlulisa njenge-callback: `setInterval(this.tick, 1000)`. Uma i-timer isebenza, akusekho into ngakwesobunxele se-tick. Ukubopha okungabonakali kuyalahleka, bese ukubopha okuzenzakalelayo kuthatha indawo, okwenza `this` ibe yi-global noma i-undefined, bese ikhodi yakho yehluleka.
Isixazululo sakudala kwakuwukusebenzisa i-`bind(this) ` noma ukugcina ireferensi efana ne-`const self = this`. Namuhla, imisebenzi yomcibisholo ifaneleka kahle ekuxazululeni lokhu kulahlekelwa komongo , ngoba izuza i-`this` yangaphandle futhi ayiguquli ngisho noma idluliswa njenge-callbacks.
Abakhi, abasha kanye nalokhu
Uma ubiza umsebenzi nge- new , iJavaScript yenza izinto eziningana ngokuzenzakalelayo ukuze iwuphathe njengomakhi:
- Dala into entsha engenalutho.
- Bopha Lena into entsha ngaphakathi komsebenzi.
- Lungisa i-prototype yento entsha ibe yi-prototype yomakhi.
- Buyisela into, ngaphandle kokuthi ubuyisele enye into ngokuqondile.
Ngenxa yalokhu, umakhi ofana no -`function Persona(nombre) { this.nombre = nombre; }` ikuvumela ukuthi wenze `const p = new Persona('Ana');` futhi ube nento enempahla ethi `nombre`. Ngaphakathi komakhi, `this` ibhekisela kuleso simo esisanda kudalwa.
Le ndlela isetshenziswa futhi ukuklama izakhiwo eziyinkimbinkimbi kakhulu, njenge-akhawunti yasebhange enezindlela zokufaka imali nokukhipha imali noma imoto enezindlela zokushayela kanye nezakhiwo ezifana nonyaka kanye nomodeli. Kuzo zonke lezi zimo, `lesi` yisibonelo esiqondile osebenza ngaso.
Kubaluleke kakhulu: imisebenzi yomcibisholo ayikwazi ukusetshenziswa njengabakhi . Ayisekeli ukusetshenziswa kwe-`new`, futhi uma uzama, uzothola iphutha. Njengoba ingenayo eyayo i-`this` noma i-`prototype`, ayifaneleki kule modeli.
Imodi yokubopha ezenzakalelayo neqinile
Uma kungekho ukubopha okucacile, okungacacile, noma okusha okusebenza, iJavaScript ibuyela emuva ku- default binding :
- Kumodi engaqinile, Lokhu kukhomba into yomhlaba wonke (iwindi kusiphequluli, i-global ku-Node.js).
- Kumodi eqinile ('sebenzisa ngokuqinile'), Lokhu akuchaziwe emsebenzini ojwayelekile obizwa ngokuthi "i-bareback".
Lolu shintsho lwemodi eqinile luwusizo kakhulu ngoba lukuvimbela ekushintsheni ngephutha into yomhlaba wonke lapho ucabanga ukuthi usebenza ngomongo ohlukile. Amaphutha amaningi avamile nge-`this` avele lapho usebenzisa i-'use strict' ngoba ayayeka ukusebenza kahle futhi ahluleke ngokushesha.
Enye imininingwane ebalulekile ukuthi, endaweni yomhlaba wonke yesiphequluli, iziguquguquko ezimenyezelwe nge-`var` ziba yizakhiwo zento yomhlaba wonke . Ngakho-ke, uma umemezela i-`var globalName = 'User'`, ungafinyelela i-`window.globalName`. Lokhu kuhlangana ne-`this` emisebenzini engaqinile futhi kuholela ekuziphatheni okunelukuluku (futhi ngezinye izikhathi okuyingozi).
Umcibisholo usebenza “njengoshintsho lomdlalo” kulokhu
Inzuzo enkulu yemisebenzi yomcibisholo ukuthi ayidali i-`this` entsha . Esikhundleni salokho, ibamba i-`this` yesikali lapho idalwe khona. Kalula nje: `this` ngaphakathi komsebenzi womcibisholo ifana ne-`this` ne-outside.
Lokhu kuxazulula izinkinga eziningi zakudala lapho umongo ulahlekile, isibonelo ku-forEach callbacks, setTimeout, listeners, kanye nezithembiso. Akusekho sidingo sokubopha ku-callback ngayinye yangaphakathi noma ukuthwala izinto eziguquguqukayo eziphakathi njenge-self noma lokho ukuze kulondolozwe umongo.
Isibonelo esivamile kakhulu ukuphindaphinda ngokusebenzisa uhlu lwamalungu ngaphakathi kwento yeqembu. Uma usebenzisa umsebenzi ojwayelekile ngaphakathi kwe-`forEach`, `this` iyaphuka futhi ayisekho ekhomba into yeqembu. Uma usebenzisa umsebenzi womcibisholo esikhundleni salokho, `this` ihlala iyinani lendlela yangaphandle , ngakho-ke ungafunda `this.name` ngaphandle kwanoma yiziphi izimanga.
Umongo womhlaba wonke, izindlela zezinto, kanye nemisebenzi yomcibisholo
Imisebenzi yomcibisholo iziphatha ngendlela ehlukile kuye ngokuthi ichazwe kanjani :
- Uma zichazwa kububanzi bomhlaba wonke, zizuza ifa lento yomhlaba wonke (iwindi noma into yemodyuli kuye ngemvelo).
- Uma zichaziwe ngaphakathi kwendlela evamileBazuza ifa elithi `le` laleyo ndlela, okuvame ukuba yinto eyibize kanjalo.
- Uma ubeka umcibisholo ngqo njengendlela yento (myObj.method = () => {}), Awuyitholi into efana nalekodwa okwangaphandle lokhu (komhlaba wonke noma okwemodyuli).
Leli phuzu lokugcina libalulekile: akuwona umqondo omuhle ukusebenzisa imisebenzi yomcibisholo njengezindlela zezinto uma uthembele ku-`this` ukufinyelela izakhiwo zento . Kulezo zimo, kungcono ukusebenzisa i-syntax yomsebenzi yakudala ngaphakathi kwendlela, ukuze i-`this` ibe yinto.
Ngokuphambene nalokho, kuwumkhuba omuhle ukusebenzisa imisebenzi yomcibisholo ohlanganisiwe ngaphakathi kwezindlela ezijwayelekile uma ufuna ama-callback ahlonipha i-`this` yaleyo ndlela (isibonelo, ku-`forEach`, `map`, `setTimeout`...).
Amakilasi e-ES6, lokhu kanye nemisebenzi yomcibisholo
Amakilasi e-ES6 awalutho ngaphandle koshukela we-syntactic phezu kwe-prototype kanye nesistimu yomakhi , kodwa asiza ekwakheni kangcono ikhodi. Ngaphakathi kwekilasi, umakhi uziphatha njengomkhi womsebenzi wendabuko: `lokhu` kukhomba kusibonelo esisanda kudalwa.
Izindlela ezichazwe njenge -`myMethod() { … }` zisebenzisa futhi i-`this` njengesibonelo lapho ibizwa entweni. Kodwa-ke, uma ukhipha indlela bese uyigcina ku-variable ngaphandle kokubopha, uzolahlekelwa umongo futhi, njenganoma yimuphi omunye umsebenzi ojwayelekile.
Isu elidumile kakhulu ukuchaza ezinye izindlela zeklasi njengezakhiwo usebenzisa i-`arrow function` , isibonelo, `getInfoArrow = () => { … }`. Lezi zindlela "ziboshelwe" ku-instance kusukela ngesikhathi sokudalwa kwayo, ngakho-ke noma ngabe uzidlulisa njenge-callbacks noma uzikhiphe kumongo, `this` izoqhubeka ikhombe kahle into . Lokhu kusetshenziswa kakhulu kuzinhlaka ezifana ne-React (enezingxenye zeklasi) ukuze kugwenywe ukubopha umphathi wemicimbi ngamunye kumakhi.
Imicimbi ye-DOM, ukubizwa kabusha, nezinkinga ezivamile `ngalokhu`
Kusiphequluli, uma wengeza umlaleli womcimbi nge-`addEventListener` bese udlula umsebenzi ojwayelekile, i-`this` ngaphakathi kwesiphathi ikhomba ku-DOM element eyabangela umcimbi . Lokhu ngezinye izikhathi kuyasiza, kodwa ngezinye izikhathi kwephula umongo weklasi noma into yakho.
Isibonelo, uma ekilasini le-Button wenza i-`this.element.addEventListener('click', this.handleClick)`, lapho umcimbi uqaliswa, i-`this` ngaphakathi kwe-`handleClick` izoba yisici se-DOM, hhayi isibonelo sekilasi. Ukuze ulungise lokhu, unezinketho ezintathu ezivamile:
- Usar bopha (lokhu) lapho ubhalisa umlaleli.
- Dlulisa umsebenzi womcibisholo obiza lokhu.handleClick(), ngaleyo ndlela uthole lokhu njengefa kulesi sibonelo.
- Chaza i-handleClick njengempahla enomsebenzi womcibisholo ekilasini.
Kuma-callback e-array (imephu, isihlungi, i-forEach, njll.), kwenzeka into efanayo: uma udlula indlela ngaphandle kokubopha, ungalahlekelwa umongo. Futhi, imisebenzi yomcibisholo ilula kakhulu ekubhaleni ama-callback angaphakathi abona `lokhu` okufanele ngaphandle kokudinga ukubopha ngesandla.
Ukusebenza okungenasisekelo, izithembiso, kanye ne-async/await
Nge-async/await, inani lalokhu ligcinwa ngokwemvelo ngaphakathi kwendlela ye-asynchronous, inqobo nje uma usebenzisa imisebenzi evamile endleleni yekilasi.
Kodwa-ke, uma uhlanganisa izithembiso nge-`then` kanye ne-`catch`, uma usebenzisa imisebenzi ejwayelekile ngaphakathi kwalezo zindlela, usengozini yokulahlekelwa yimfanelo ye-`this` yesibonelo. Yingakho kuvame kangaka ukubhala i -`.then(data => this.process(data))` kanye ne -`.catch(error => this.handleError(error))` : imisebenzi yomcibisholo iqinisekisa ukuthi i-`this` iyaqhubeka nokukhomba into yokuqala.
Ngamafuphi, kukhodi yesimanje engasebenzi kahle, imisebenzi yomcibisholo iyithuluzi elijwayelekile lokugcina umongo ngaphandle kokudinga ukubopha yonke indawo.
Kunini lapho kufaneleka khona ukusebenzisa imisebenzi yomcibisholo
Imisebenzi yomcibisholo iyakhanya ikakhulukazi kulezi zimo:
- Ukuphinda ushayele ucingo okufushane ngezindlela zohlu, izithembiso, izibali sikhathi, njll.
- Imisebenzi emincane nelula lapho ubeka khona phambili ukufinyeza kunethuba lokusebenzisa lokhu futhi.
- Izimo lapho Ingabe ufuna lokhu kuhlale kungokuvela endaweni engaphandle?, njengangaphakathi kwendlela yekilasi noma yento.
- Izingxenye zekilasi ku-React kanye nemitapo yolwazi efanayo, ye gwema ukubopha kumakhi kumphathi ngamunye.
Ngaphezu kwalokho, ezinhlelweni ezisebenzayo kakhulu (ukwakheka komsebenzi, ukwelapha, ukuguqulwa kwedatha) imisebenzi yomcibisholo yenza ikhodi ifundeke kalula futhi iveze imizwa, ngoba ithanda imisebenzi emsulwa nemfushane ngaphandle kokuyibiza ngamagama.
Uma UNGAFANELE usebenzise imisebenzi yomcibisholo
Kukhona nezimo ezicacile lapho ukusebenzisa imisebenzi yomcibisholo kungewona umqondo omuhle futhi umsebenzi weklasikhi uyathandeka:
- Izindlela zento ezincike ku-`this` ukuze zifinyelele izakhiwo zento. Uma uchaza indlela ngokuthi `umcibisholo`, `this` ngeke kube yinto, kodwa umongo wangaphandle.
- AbakhiImisebenzi yomcibisholo ayikwazi ukusetshenziswa ne-new, ngakho-ke ayisebenzi ekudaleni izimo.
- Imisebenzi edinga into ye-arguments Imisebenzi yomcibisholo ayinazo izimpikiswano zayo; uma uyidinga, sebenzisa amapharamitha omsebenzi ojwayelekile noma okuphumula (...args).
- Izinsiza noma abasizi abamsulwa okungaxhomekile kumongo
Imisebenzi yokusetshenziswa (i-formatCurrency, i-calculatorTax, imisebenzi emincane yezibalo) akufanele incike ku-`this` . Kulezi zimo, kubalulekile ukuthi ihlanzekile, kulula ukuyihlola, futhi ingabi nemiphumela emibi. Ungayibhala nge-`function` noma `arrow`, kodwa gwema ukuthembela ku-`this` nhlobo.
Kumaphethini okuhlela asebenzayo, kuyanconywa futhi ukuthi imisebenzi ingaxhomeki kumongo. Uma usebenzisa kancane `lokhu` kulolu hlobo lwekhodi, i-codebase yakho izoba ngcono futhi ikwazi ukuhlanganiswa.
Lokhu ezindaweni zesimanje: React kanye neNode.js
Ku-React ngezingxenye zekilasi, ukusetshenziswa kwe-`this` kubalulekile ekuphatheni isimo kanye nama-props . Abaphathi bemicimbi badinga ukufinyelela ku-`this.setState` kanye nezakhiwo zengxenye. Uma ungabophi noma ungasebenzisi imisebenzi yomcibisholo kulaba baphathi, uzohlangana namaphutha e-`this undefined` ngokushesha nje lapho umsebenzisi echofoza.
Ngakho-ke, kumaphrojekthi amaningi uzobona amaphethini afana ne -handleChange = (event) => { … } kanye ne-onClick={this.handleChange} . Le misebenzi yomcibisholo, echazwa njengezakhiwo zekilasi, iboshelwa ngokuzenzakalelayo ku-instance , igwema ukubopha okwengeziwe kumakhi futhi inciphise ingozi yamaphutha omongo.
Ku-Node.js, ukuziphatha kwe-`this` ezingeni le-module akufani nokusesipheqululini . Ezingeni lefayela, i-`this` ivame ukukhomba ku-`module.exports` (ku-CommonJS) noma ayichazwanga kumamojula e-ES, esikhundleni sento yomhlaba wonke. Lokhu kuthinta indlela oqonda ngayo i-`this` uma ubhala amalabhulali namamojula angasetshenziswa kabusha.
Kunoma ikuphi, umthetho uhlala ufana: imisebenzi yomcibisholo izuza ifa le-`this` endaweni lapho ichazwe khona . Ku-Node, leyo kuzoba yimojula noma ikilasi okulo, elichaza ukuthi uklama kanjani ama-API akho nokuthi uveza kanjani izindlela kwamanye amafayela.
Ukusebenzisa iJavaScript ezindaweni ezifana ne-Appsmith
Kumapulatifomu anekhodi ephansi/angenakhodi njenge-Appsmith, ungabhala i-JavaScript cishe kunoma iyiphi impahla yewijethi (umbhalo, umbala, okubonakalayo, okukhutshaziwe, njll.) usebenzisa izinkulumo ezifakwe kuma-braces agobile {{ }}. Lezi zinkulumo ziyahlolwa futhi zihlala zibuyisela inani: umucu, inombolo, i-boolean, into, njll.
Ungachaza futhi imisebenzi ejwayelekile, izinkulumo, kanye nemisebenzi yomcibisholo ngaphakathi kwe-JSObjects , okuyizithiyo zekhodi ye-JavaScript ene-`export default { … }`. Kubalulekile ukuqaphela ukuthi, ezingeni eliphezulu le-JSObject, uchaza izakhiwo kanye nezindlela njengezibhangqa zenani eliyinhloko ezihlukaniswe ngamakhoma, nokuthi isici se-`this` salezo zindlela sisebenza kuye ngokuthi ngabe ziyimisebenzi evamile noma imisebenzi yomcibisholo.
Njengomkhuba omuhle kakhulu, i-JSObjects ngokuvamile isebenzisa imisebenzi ejwayelekile njengezindlela eziyinhloko (ukugwema ukudideka `ngalokhu`) kanye nemisebenzi yomcibisholo ehlanganisiwe ngaphakathi kwalezo zindlela njengezindlela zokubuyela emuva kwezihlungi, amamephu, ukunciphisa, njll. Le phethini ikuvumela ukuthi usebenzise i-syntax ehlanganisiwe yemicibisholo ngaphandle kokwenza kube nzima ukuphathwa komongo.
Izindlela ezinhle kakhulu zokuqonda kahle lokhu kanye nemisebenzi yomcibisholo
Ukuze uthole okuningi kula mathuluzi ngaphandle kokuhlanya, kuneziqondiso eziningana ezifanele ukuzifunda:
- Cacisa umongoUma ungabaza, sebenzisa imisebenzi yokubopha noma yomcibisholo ukuze ucacise ukuthi yikuphi `lokhu` ofuna ukukusebenzisa.
- Sebenzisa imisebenzi yomcibisholo ukuze ushayele emuva cishe njalo, ikakhulukazi ezindleleni zekhodi ezingavumelani kanye nezindlela ze-array, ukuze kugwenywe ukulahlekelwa yi-`this` yangaphandle.
- Ungaxubi izitayela ngokungadingekileUma usebenzisa izindlela zomcibisholo kubaphathi ekilasini, gcina lelo phethini kuyo yonke ingxenye ukuze kube nokuvumelana.
- Sebenzisa i-'use strict' noma sebenzisa izindawo ezivele zisebenzisa imodi eqinile ukuze amaphutha ngalokhu aqale ngokushesha.
- Gwema ukuthembela ku-`lokhu` ngemisebenzi yokusetshenziswaUma zihlanzekile, kulula ukuzihlola nokuzisebenzisa kabusha.
Ukuqonda okuqinile kokuthi ungayisebenzisa kanjani futhi nini imisebenzi yomcibisholo, nokuthi ukuziphatha kwayo okuchazayo kuhlanganisani , kanye nemithetho ebophayo yemisebenzi ejwayelekile, kukubeka esimweni esinamandla kakhulu sokubhala i-JavaScript yesimanje. Ngokuzijwayeza, uzoyeka ukubona `lokhu` njengesitha esinobuqili kodwa esikhundleni salokho ukubone njengethuluzi elinamandla ongaliqonda kalula kunoma yisiphi isimo, kusukela kusiphequluli kuya ku-Node.js noma izinhlaka ezifana ne-React.
Umbhali oshisekayo ngomhlaba wamabhayithi nobuchwepheshe ngokujwayelekile. Ngiyathanda ukwabelana ngolwazi lwami ngokubhala, futhi yilokho engizokwenza kule bhulogi, ngikubonise zonke izinto ezithakazelisayo kakhulu ngamagajethi, isofthiwe, ihadiwe, izitayela zobuchwepheshe, nokuningi. Inhloso yami ukukusiza ukuthi uzulazule emhlabeni wedijithali ngendlela elula nejabulisayo.