19.function.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. function write(v) { WScript.Echo(v + ""); }
  6. function PrintDescriptor(name, propDesc) {
  7. write(name + ":configurable : " + propDesc.configurable);
  8. write(name + ":enumerable : " + propDesc.enumerable);
  9. write(name + ":writable : " + propDesc.writable);
  10. write(name + ":getter : " + propDesc.get);
  11. write(name + ":setter : " + propDesc.set);
  12. write(name + ":value : " + propDesc.value);
  13. }
  14. function exceptToString(ee) {
  15. if (ee instanceof TypeError) return "TypeError";
  16. if (ee instanceof ReferenceError) return "ReferenceError";
  17. if (ee instanceof EvalError) return "EvalError";
  18. if (ee instanceof SyntaxError) return "SyntaxError";
  19. return "Unknown Error";
  20. }
  21. (function Test1() {
  22. var str = "function.caller get";
  23. try {
  24. Test1.caller;
  25. } catch (e) {
  26. write("Exception: " + str + " " + exceptToString(e));
  27. return;
  28. }
  29. write("Return: " + str);
  30. })();
  31. (function Test2() {
  32. var str = "function.caller set";
  33. try {
  34. Test2.caller = 10;
  35. } catch (e) {
  36. write("Exception: " + str + " " + exceptToString(e));
  37. return;
  38. }
  39. write("Return: " + str);
  40. })();
  41. (function Test3() {
  42. var str = "function.arguments get";
  43. try {
  44. Test3.arguments;
  45. } catch (e) {
  46. write("Exception: " + str + " " + exceptToString(e));
  47. return;
  48. }
  49. write("Return: " + str);
  50. })();
  51. (function Test4() {
  52. var str = "function.arguments get";
  53. try {
  54. Test4.arguments = 10;
  55. } catch (e) {
  56. write("Exception: " + str + " " + exceptToString(e));
  57. return;
  58. }
  59. write("Return: " + str);
  60. })();
  61. (function Test5() {
  62. var str = "function.caller get";
  63. try {
  64. PrintDescriptor("Test5.caller", Object.getOwnPropertyDescriptor(Test5, "caller"));
  65. } catch (e) {
  66. write("Exception: " + str + " " + exceptToString(e));
  67. return;
  68. }
  69. write("Return: " + str);
  70. })();
  71. (function Test6() {
  72. var str = "function.arguments get";
  73. try {
  74. PrintDescriptor("Test6.arguments", Object.getOwnPropertyDescriptor(Test6, "arguments"));
  75. } catch (e) {
  76. write("Exception: " + str + " " + exceptToString(e));
  77. return;
  78. }
  79. write("Return: " + str);
  80. })();