This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const objectContructor = (...args) => { | |
| //get the constructor function | |
| let constructor = [].shift.call(args); | |
| /** | |
| * create a new object and link the prototype to the function prototype | |
| * equals to var obj = new Object(), obj.__proto__ = Constructor.prototype | |
| */ | |
| let obj = Object.create(constructor.prototype); | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Ultimate version solving circular dependency with weakMap | |
| * Problems: | |
| * 1. Symbols not covered | |
| * | |
| * @param {Object} sourceObj | |
| * @param {WeakMap} [hash=new WeakMap()] | |
| * @returns | |
| */ | |
| var deepCloneUltimate = (sourceObj, hash = new WeakMap()) => { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * You should be good with this solution | |
| * More comprehensive deepclone with JS. Cover null and Array. | |
| * Problems: | |
| * 1. did not solve the circular dependency | |
| * @param {Object} sourceObj | |
| * @returns | |
| */ | |
| var deepCloneBetter = (sourceObj) => { | |
| // if we are not dealing with complex data structure |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Maybe good enough for interview Simpliest Version of deepClone. | |
| * Problems: | |
| * 1. the type check of object is not strict | |
| * 2. did not cover array | |
| * 3. did not cover null | |
| * @param {Object} sourceObj | |
| * @returns | |
| */ | |
| var deepCloneSimple = (sourceObj) => { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var newObj = JSON.parse( JSON.stringify( someObj ) ); |
NewerOlder