05.arguments_sm.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. "use strict";
  6. function write(v) { WScript.Echo(v + ""); }
  7. function PrintDescriptor(name, propDesc) {
  8. if (propDesc) {
  9. write(name + ":configurable : " + propDesc.configurable);
  10. write(name + ":enumerable : " + propDesc.enumerable);
  11. write(name + ":writable : " + propDesc.writable);
  12. write(name + ":getter : " + propDesc.get);
  13. write(name + ":setter : " + propDesc.set);
  14. write(name + ":value : " + propDesc.value);
  15. } else {
  16. write(name + " :propDesc undefined");
  17. }
  18. }
  19. (function Test1() {
  20. var propDesc;
  21. try {
  22. propDesc = Object.getOwnPropertyDescriptor(arguments, "callee");
  23. PrintDescriptor("arguments.callee", propDesc);
  24. } catch (e) {
  25. write("Exception: " + e.message);
  26. }
  27. try {
  28. propDesc = Object.getOwnPropertyDescriptor(arguments, "caller");
  29. PrintDescriptor("arguments.caller", propDesc);
  30. } catch (e) {
  31. write("Exception: " + e.message);
  32. }
  33. try {
  34. var c = arguments.caller;
  35. } catch (e) {
  36. write("Exception: " + e.message);
  37. }
  38. try {
  39. arguments.caller = 10;
  40. } catch (e) {
  41. write("Exception: " + e.message);
  42. }
  43. try {
  44. var y = arguments.callee;
  45. } catch (e) {
  46. write("Exception: " + e.message);
  47. }
  48. try {
  49. arguments.callee = 20;
  50. } catch (e) {
  51. write("Exception: " + e.message);
  52. }
  53. })();