forked from codesONLY/JavaScriptONLY
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcloneObject.js
More file actions
40 lines (25 loc) · 949 Bytes
/
Copy pathcloneObject.js
File metadata and controls
40 lines (25 loc) · 949 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// using copying properties
let user = {
name: "John",
age: 30,
};
let clone = {}; // the new empty object
// let's copy all user properties into it
for (let key in user) {
clone[key] = user[key];
}
// now clone is a fully independent object with the same content
clone.name = "Pete"; // changed the data in it
console.log(user.name); // still John in the original object
// Using Object.assign
let permissions1 = { canView: true };
let permissions2 = { canEdit: true };
// copies all properties from permissions1 and permissions2 into user
Object.assign(user, permissions1, permissions2);
// now user = { name: "John", canView: true, canEdit: true }
Object.assign(user, { name: "Pete" });
console.log(user.name); // now user = { name: "Pete" }
let clone2 = Object.assign({}, user); // shallow copy
console.log(clone2);
// clone in a different way
let clone = Object.defineProperties({}, Object.getOwnPropertyDescriptors(obj));