| //------------------------------------------------------------------------------------------------------- | |
| // Copyright (C) Microsoft. All rights reserved. | |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
| //------------------------------------------------------------------------------------------------------- | |
| function write(v) { WScript.Echo(v + ""); } | |
| function doEval(str) { | |
| var r; | |
| try { | |
| r = eval(str); | |
| write(str + ": result = " + r); | |
| } catch (e) { | |
| write("Exception: " + e); | |
| } | |
| } | |
| function f0() | |
| { | |
| write("f0"); | |
| return "f0"; | |
| } | |
| function f1(x) | |
| { | |
| write("f1 x: " + x); | |
| return "f1"; | |
| } | |
| function f2(x,y) | |
| { | |
| write("f2 x: " + x + " y: " + y); | |
| return "f2"; | |
| } | |
| function f3(x,y,z) | |
| { | |
| write("f3 x: " + x + " y: " + y + " z: " + z); | |
| write(z.substring(y, x.length)); | |
| return "f3"; | |
| } | |
| var s1 = new String("This is a some string value. 12.34"); | |
| var s2 = "This is a some string value. 12.34"; | |
| var search = ['"some"', 12, 34, "/[0-9]/", "/[0-9]+/", "/[0-9]+/g", "undefined", "null" ]; | |
| var replace= ['"any"', '""', "undefined", "null", "f0", "f1", "f2", "f3"]; | |
| for (var i=0; i<search.length; i++) | |
| { | |
| for (var j=0; j<replace.length; j++) | |
| { | |
| doEval("s1.replace(" + search[i] + ", " + replace[j] + ");"); | |
| doEval("s2.replace(" + search[i] + ", " + replace[j] + ");"); | |
| } | |
| } | |
| //implicit calls | |
| var called = false; | |
| var replaceobj = {toString: function() { called = true; }}; | |
| "ABC".replace("D", replaceobj); | |
| WScript.Echo (called); | |