Last active
September 14, 2018 22:17
-
-
Save sandipchitale/0bc1b079fdce65ea065d79fb669cc09c to your computer and use it in GitHub Desktop.
Generic constructor override with example of Date
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
| (function (context, constructorName, special) { | |
| var Original; | |
| Original = context[constructorName]; | |
| context[constructorName] = function PatchedOriginal() { | |
| var args; | |
| args = Array.prototype.slice.call(arguments); | |
| var returnObject; | |
| if (special) { | |
| returnObject = special(Original, PatchedOriginal, args); | |
| } | |
| if (returnObject != null) { | |
| return returnObject; | |
| } | |
| if (args.length === 0) { | |
| return new Original(); | |
| } else if (args.length === 1) { | |
| return new Original(args[0]); | |
| } else if (args.length === 2) { | |
| return new Original(args[0], args[1]); | |
| } else if (args.length === 3) { | |
| return new Original(args[0], args[1], args[2]); | |
| } else if (args.length === 4) { | |
| return new Original(args[0], args[1], args[2], args[3]); | |
| } else if (args.length === 5) { | |
| return new Original(args[0], args[1], args[2], args[3], args[4]); | |
| } else if (args.length === 6) { | |
| return new Original(args[0], args[1], args[2], args[3], args[4], args[5]); | |
| } else if (args.length === 7) { | |
| return new Original(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); | |
| } else if (args.length === 8) { | |
| return new Original(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]); | |
| } | |
| } | |
| // Copy static properties | |
| for (var prop in Original) { | |
| if (Original.hasOwnProperty(prop)) { | |
| context[constructorName][prop] = Original[prop]; | |
| } | |
| } | |
| }(window, 'Date', function(Original, PatchedOriginal, args) { | |
| if (args.length == 1) { | |
| return new Original(args[0].getTime()); | |
| } | |
| return null; | |
| })); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment