The Objekta atpūtas/izplatīšanas priekšlikums sasniedza 4. posms 2018. gadā, kas nozīmē, ka tas tiks iekļauts ECMAScript specifikācijas turpmākajā atkārtojumā. Tā ir iekļauta arī Node.js LTS kopš Node.js 8, tāpēc varat droši sākt to lietot jau šodien.
{...obj}
Objektu izkliedes operators | _+_ | ir līdzīgs | _+_ |, tad kuru izmantot? Izrādās, ka atbilde ir nedaudz niansētāka, nekā jūs varētu gaidīt.
roku com saite aktivizēt
Ātrs objekta izplatības pārskats
Objekta izplatīšanas operatora pamatideja ir izveidot jaunu vienkāršu objektu, izmantojot savus īpašumus esoša objekta. Tātad | _+_ | izveido jaunu objektu ar tādām pašām īpašībām un vērtībām kā | _+_ |. Priekš vienkārši veci JavaScript objekti , jūs būtībā veidojat | _+_ | kopiju.
Object.assign()
Tāpat kā | _+_ |, to dara objekta izkliedes operators nē kopēt mantotos rekvizītus vai klases informāciju. Tā dara kopiju ES6 simboli .
{...obj}
Jūs varat arī sajaukt citus rekvizītus ar objekta izkliedes operatoru. Kārtībai ir nozīme: objekta izplatīšanas operators pārrakstīs rekvizītus, kas ir definēti pirms tā, bet ne pēc tam.
obj
Atšķirības pret | _+_ |
| _+_ | funkciju pēc būtības ir savstarpēji aizvietojams ar objektu izkliedes operatoru iepriekš minētajiem piemēriem. Patiesībā ,. objekta izkliede spec skaidri norāda, ka | _+_ | ir līdzvērtīgs | _+_ |.
obj
Kāpēc tad izmantot vienu vai otru? Viena būtiska atšķirība ir tā, ka objektu izkliedēšanas operators vienmēr atdod jums POJO. | _+_ | funkcija maina savu pirmo parametru vietā:
Object.assign()
Citiem vārdiem sakot, | _+_ | maina objektu vietā, un tāpēc tas var iedarbināt ES6 seteri . Ja vēlaties izmantot nemainīgs metodes, objekta izkliedes operators ir skaidrs uzvarētājs. Izmantojot | _+_ |, jums jāpārliecinās, ka vienmēr izlaižat tukšu objektu | _+_ | kā pirmais arguments.
Kā ir ar sniegumu? Šeit ir daži vienkārši etaloni. Šķiet, ka objektu izplatīšanās ir ātrāka, ja tukšu objektu kā pirmo parametru nododat | _+_ |, bet citādi tie ir savstarpēji aizvietojami.
Šeit ir a etalons izmantojot | _+_ | ar uzdevumu uz vietas:
MyClass
Šajā gadījumā abi ir līdzīgi:
BaseClass
Tomēr, ievadot tukšu objekta parametru uz | _+_ |, objekta izkliedes operators ir pastāvīgi ātrāks:
Object.assign()
Šeit ir izlaide:
Object.assign()
ESLint konfigurācija
Pēc noklusējuma ESLint neļauj objektu atpūtas/izkliedēšanas operatoram parsētāja līmenī. Jums jāiestata | _+_ | iespēja vismaz | _+_ | | _+_ |, pretējā gadījumā jūs saņemsit parsēšanas kļūdu.
{ …obj }
ESLint pievienoja jaunu noteikumu | _+_ | kas ļauj izpildīt, izmantojot objektu izkliedi, nevis | _+_ |. Lai iespējotu šo noteikumu, izmantojiet:
Object.assign({}, obj)
Tagad ESLint ziņos par kļūdu, ja izmantojat | _+_ | objekta izplatīšanās vietā.
Object.assign()
Virzās tālāk
Objektu atpūtas/izkliedēšanas operatori ir sintaktiski glīti un piedāvā veiktspējas priekšrocības salīdzinājumā ar | _+_ |. Ja izmantojat Node.js 8 vai jaunāku versiju, izmēģiniet šos jaunos operatorus un padariet kodu kodolīgāku.
Sākotnēji publicēja Valērijs Karpovs plkst thecodebarbarian.com
cik karsts mākslīgais intelekts
==============================================
Paldies, ka izlasījāt: heart: Ja jums patika šī ziņa, kopīgojiet to ar visiem saviem programmēšanas draugiem! Sekojiet man Facebook | Twitter
Apmācība - Async Await izmantošana Node.js
Node.js 12: servera puses JavaScript nākotne
Dizaina modeļi vietnē Node.js: praktisks ceļvedis
#mezgls-js #javascript
thecodebarbarian.com
Izmantojot Object.assign vs Object Spread programmā Node.js
Object.assign () maina objektu vietā un tādējādi var aktivizēt ES6 iestatītājus. Ja vēlaties izmantot nemainīgas metodes, objekta izplatīšanas operators ir skaidrs ieguvējs. Izmantojot Object.assign (), jums ir jānodrošina, lai vienmēr kā pirmais arguments tiktu nodots tukšs objekts {}.
Skatīt Arī:
- Fix QuickBooks algu kļūda 15243 (FCS pakalpojums ir atspējots)
- Reāllaika interaktīvās HTML tabulas ar Easybase un DataTables.net
- Izveidojiet dinamisku formu UIKit (kompozīcijas izkārtojums, atšķirīgs datu avots, UICollectionView)
- Kā bloķēt vietnes pārlūkā Chrome
- Firebase administratora SDK ar GraphQL