Skip to content

Commit b6907ac

Browse files
committedNov 25, 2018
Support symbol properties in clone()
1 parent 56f4849 commit b6907ac

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed
 

‎lib/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ exports.clone = function (obj, seen) {
6666
seen.set(obj, newObj);
6767

6868
if (cloneDeep) {
69-
const keys = Object.getOwnPropertyNames(obj);
69+
const keys = Reflect.ownKeys(obj);
7070
for (let i = 0; i < keys.length; ++i) {
7171
const key = keys[i];
7272

‎test/index.js

+15
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,21 @@ describe('clone()', () => {
135135
expect(a).to.equal(b);
136136
});
137137

138+
it('clones symbol properties', () => {
139+
140+
const sym1 = Symbol(1);
141+
const sym2 = Symbol(2);
142+
const a = { [sym1]: 1 };
143+
Object.defineProperty(a, sym2, { value: 2 });
144+
145+
const b = Hoek.clone(a);
146+
147+
expect(a).to.equal(b);
148+
expect(Hoek.deepEqual(a, b)).to.be.true();
149+
expect(b[sym1]).to.be.equal(1);
150+
expect(b[sym2]).to.be.equal(2);
151+
});
152+
138153
it('performs actual copy for shallow keys (no pass by reference)', () => {
139154

140155
const x = Hoek.clone(nestedObj);

0 commit comments

Comments
 (0)
Please sign in to comment.