prasmė
Išplėtimo operatorius (spredas) yra trys taškai (...) )。 Tai tarsi atvirkštinis poilsio parametras, paverčiantis masyvą kableliais atskirta parametrų seka.
Šis operatorius daugiausia naudojamas funkciniams skambučiams.
Aukščiau esančiame kode array.push(...) elementus) ir pridėti(...) numeriai), kurie abu yra funkcijų iškvietimai, ir jie abu naudoja plėtinių operatorius. Šis operatorius paverčia masyvą parametrų seka. Išplėtimo operatoriai gali būti naudojami kartu su įprastais funkcijos parametrais, o tai yra labai lanksti.
Taikyti metodą alternatyviems masyvams
Kadangi plėtinio operatorius gali išplėsti masyvą, nereikia naudoti taikymo metodo, kad masyvas taptų funkcijos argumentu.
Štai praktinis pavyzdys, kaip išplėtimo operatorius pakeičia taikymo metodą, taikydamas Math.max metodą, kad supaprastintų didžiausio masyvo elemento rašymą.
Aukščiau pateiktame kode sakoma, kad kadangi "JavaScript" nesuteikia funkcijos, leidžiančios rasti didžiausią masyvo elementą, galite taikyti tik Math.max funkciją, kad masyvą paverstumėte parametrų seka ir rastumėte maksimalią vertę. Naudodami plėtinio operatorių galite Math.max naudoti tiesiogiai. Kitas pavyzdys yra masyvo pridėjimas prie kito masyvo uodegos naudojant stūmimo funkciją.
Taikant aukščiau pateikto kodo ES5 rašymo metodą, stūmimo metodo parametrai negali būti masyvai, todėl turime lanksčiai naudoti stūmimo metodą taikydami metodą. Naudojant išplėtimo operatorių, masyvą galima perduoti tiesiai į stūmimo metodą. Štai dar vienas pavyzdys.
Išplėsti veiklos vykdytojų taikymo sritį
(1) Sulieti masyvus
Išplėtimo operatorius suteikia naują skaičių derinio rašymo būdą.
(2) kartu su dekonstruota užduotimi
Išplėtimo operatoriai gali būti derinami su dekonstruotais priskyrimais, kad būtų generuojami masyvai.
Jei masyvo priskyrimui naudojate plėtinio operatorių, jį galima įdėti tik prie paskutinio parametro skaitmens, kitaip bus pranešta apie klaidą.
(3) Grąžinama funkcijos reikšmė
"JavaScript" funkcijos gali grąžinti tik vieną reikšmę, o jei reikia grąžinti kelias reikšmes, tik masyvus arba objektus. Plėtinių operatoriai pateikia sprendimą, kaip išspręsti šią problemą.
Aukščiau pateiktas kodas paima duomenų eilutę iš duomenų bazės, išplečia operatorių ir perduoda jį tiesiai konstruktoriui Date.
(4) Eilutė
Plėtinių operatoriai taip pat gali paversti eilutes tikrais masyvais.
Aukščiau pateiktas rašymas turi svarbų pranašumą, tai yra, jis gali teisingai atpažinti 32 bitų "Unicode" simbolius.
Pirmasis būdas parašyti aukščiau pateiktą kodą, JavaScript atpažįsta 32 bitų Unicode simbolius kaip 2 simbolius, ir nėra jokių problemų su plėtinių operatoriais. Taigi funkcija, kuri teisingai grąžina eilutės ilgį, gali būti parašyta taip:
Tai yra bet kurios funkcijos, susijusios su manipuliavimu 32 bitų Unicode simboliais, problema. Todėl geriausia juos visus perrašyti su plėtinių operatoriais.
Aukščiau pateiktame kode, jei nenaudojate plėtinio operatoriaus, eilutės atvirkštinė operacija yra neteisinga.
(5) Objektai, kuriuose įdiegta iteratoriaus sąsaja
Bet kurį objektą iteratoriaus sąsajoje galima konvertuoti į tikrą masyvą su plėtinio operatoriumi.
Aukščiau pateiktame kode metodas querySelectorAll grąžina nodeList objektą. Tai ne masyvas, o į masyvą panašus objektas. Tokiu atveju plėtinio operatorius gali jį paversti tikru masyvu, nes "NodeList" objektas įgyvendina "Iterator" sąsają. Tiems į masyvą panašiems objektams, kurie neturi įdiegtos iteratoriaus sąsajos, plėtinio operatorius negali jų paversti tikru masyvu.
Aukščiau pateiktame kode arrayLike yra į masyvą panašus objektas, tačiau neįdiegęs "Iterator" sąsajos, plėtinio operatorius praneš apie klaidą. Tokiu atveju galite naudoti metodą Array.from, kad konvertuotumėte arrayLike į tikrą masyvą.
(6) Žemėlapio ir nustatymo struktūros, generatoriaus funkcijos
Išplėtimo operatorius viduje iškviečia duomenų struktūros iteratoriaus sąsają, todėl bet kuris objektas, turintis iteratoriaus sąsają, gali naudoti plėtinio operatorių, pvz., žemėlapio struktūrą.
Kai veikia funkcija Generator, ji grąžina traverserio objektą, todėl taip pat galima naudoti išplėtimo operatorius.
Aukščiau pateiktame kode kintamasis go yra generatoriaus funkcija, o po vykdymo jis grąžina traverserio objektą, o vykdant šio perėjimo objekto išplėtimo operatorių, vidinės perėjimo metu gautos reikšmės bus konvertuotos į masyvą. Jei objektui be iteratoriaus sąsajos naudojate plėtinio operatorių, bus pranešta apie klaidą.
|