1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| 'use strict'
|
| module.exports = clone
|
| var getPrototypeOf = Object.getPrototypeOf || function (obj) {
| return obj.__proto__
| }
|
| function clone (obj) {
| if (obj === null || typeof obj !== 'object')
| return obj
|
| if (obj instanceof Object)
| var copy = { __proto__: getPrototypeOf(obj) }
| else
| var copy = Object.create(null)
|
| Object.getOwnPropertyNames(obj).forEach(function (key) {
| Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))
| })
|
| return copy
| }
|
|