V tem primeru se boste naučili pisati program, ki klonira predmet.
Če želite razumeti ta primer, morate poznati naslednje teme programiranja JavaScript:
- Predmeti JavaScript
- JavaScript Object.assign ()
Objekt JavaScript je zapleten podatkovni tip, ki lahko vsebuje različne vrste podatkov. Na primer
const person = ( name: 'John', age: 21, )
Tukaj person
je predmet. Zdaj ne morete klonirati predmeta, če naredite kaj takega.
const copy = person; console.log(copy); // (name: "John", age: 21)
V zgornjem programu ima copy
spremenljivka enako vrednost kot person
objekt. Če pa spremenite vrednost copy
predmeta, se person
bo spremenila tudi vrednost v predmetu. Na primer
copy.name = 'Peter'; console.log(copy.name); // Peter console.log(person.name); // Peter
Sprememba je vidna pri obeh objektih, ker sta predmeta referenčna tipa . In oba copy
in person
kažeta na isti predmet.
Primer 1. Klonirajte objekt s pomočjo Object.assign ()
// program to clone the object // declaring object const person = ( name: 'John', age: 21, ) // cloning the object const clonePerson = Object.assign((), person); console.log(clonePerson); // changing the value of clonePerson clonePerson.name = 'Peter'; console.log(clonePerson.name); console.log(person.name);
Izhod
(ime: "Janez", starost: 21) Peter Janez
Object.assign()
Postopek je del ES6 standarda. Na Object.assign()
metoda opravlja globoko kopiranje in kopira vse lastnosti iz enega ali več predmetov.
Opomba : Prazno ()
kot prvi argument zagotavlja, da ne spremenite prvotnega predmeta.
2. primer: Klonirajte objekt s sintakso širjenja
// program to clone the object // declaring object const person = ( name: 'John', age: 21, ) // cloning the object const clonePerson = (… person) console.log(clonePerson); // changing the value of clonePerson clonePerson.name = 'Peter'; console.log(clonePerson.name); console.log(person.name);
Izhod
(ime: "Janez", starost: 21) Peter Janez
Sintaksa širjenja …
je bila uvedena v kasnejši različici (ES6).
Sintakso širjenja lahko uporabimo za plitvo kopijo predmeta. To pomeni, da bo objekt kopiral. Vendar pa se sklicujejo na globlje predmete. Na primer
const person = ( name: 'John', age: 21, // the inner objects will change in the shallow copy marks: ( math: 66, english: 73) ) // cloning the object const clonePerson = (… person) console.log(clonePerson); // (name: "John", age: 21, marks: (… )) // changing the value of clonePerson clonePerson.marks.math = 100; console.log(clonePerson.marks.math); // 100 console.log(person.marks.math); // 100
Tukaj, ko se notranja vrednost predmeta math
se spremeni v 100 od clonePerson
objekta, je vrednost math
ključa person
objekta tudi spreminja.
Primer 3: Klonirajte objekt z uporabo JSON.parse ()
// program to clone the object // declaring object const person = ( name: 'John', age: 21, ) // cloning the object const clonePerson = JSON.parse(JSON.stringify(person)); console.log(clonePerson); // changing the value of clonePerson clonePerson.name = 'Peter'; console.log(clonePerson.name); console.log(person.name);
Izhod
(ime: "Janez", starost: 21) Peter Janez
V zgornjem programu se JSON.parse()
metoda uporablja za kloniranje predmeta.
Opomba : JSON.parse()
deluje samo z dobesedno literaturo Number
in String
objektom. Ne deluje z dobesednim objektom z function
ali symbol
lastnostmi.