| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| var toStrings; |
| var valueOfs; |
| var toStringCalled; |
| var valueOfCalled; |
| |
| toStrings = |
| [ |
| {}, |
| function () |
| { |
| toStringCalled = true; |
| return {}; |
| }, |
| function () |
| { |
| toStringCalled = true; |
| return undefined; |
| }, |
| function () |
| { |
| toStringCalled = true; |
| return "hi"; |
| } |
| ]; |
| |
| valueOfs = |
| [ |
| {}, |
| function () |
| { |
| valueOfCalled = true; |
| return {}; |
| }, |
| function () |
| { |
| valueOfCalled = true; |
| return undefined; |
| }, |
| function () |
| { |
| valueOfCalled = true; |
| return "hi"; |
| }, |
| function () |
| { |
| valueOfCalled = true; |
| return "1/1/1970 1:00 am"; |
| }, |
| function () |
| { |
| valueOfCalled = true; |
| return "84"; |
| }, |
| function () |
| { |
| valueOfCalled = true; |
| return 37; |
| } |
| ]; |
| |
| for (var ts in toStrings) |
| { |
| for (var vo in valueOfs) |
| { |
| toStringCalled = false; |
| valueOfCalled = false; |
| |
| var obj = { toString: toStrings[ts], valueOf: valueOfs[vo] }; |
| |
| WScript.Echo("=== Implicit toString ==="); |
| try |
| { |
| WScript.Echo("" + obj); |
| } |
| catch (ex) |
| { |
| WScript.Echo("Got error:"); |
| WScript.Echo(" name: " + ex.name); |
| WScript.Echo(" message: " + ex.message); |
| } |
| WScript.Echo("toString called: " + (toStringCalled ? "yes" : "no")); |
| WScript.Echo("valueOf called: " + (valueOfCalled ? "yes" : "no")); |
| |
| WScript.Echo("=== Implicit valueOf ==="); |
| try |
| { |
| WScript.Echo(1 * obj); |
| } |
| catch (ex) |
| { |
| WScript.Echo("Got error:"); |
| WScript.Echo(" name: " + ex.name); |
| WScript.Echo(" message: " + ex.message); |
| } |
| WScript.Echo("toString called: " + (toStringCalled ? "yes" : "no")); |
| WScript.Echo("valueOf called: " + (valueOfCalled ? "yes" : "no")); |
| } |
| } |