DefProp.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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 def_prop_array()
  6. {
  7. var array = [];
  8. Object.defineProperty(array, 0, { get: function() { WScript.Echo("array[0]"); } });
  9. var sum = 0;
  10. for (var i = 0; i < 3; i++)
  11. {
  12. sum += array[0];
  13. }
  14. }
  15. function def_prop_object()
  16. {
  17. var object = {};
  18. Object.defineProperty(object, "sum", { get: function() { WScript.Echo("sum"); } });
  19. var sum = 0;
  20. for (var i = 0; i < 3; i++)
  21. {
  22. sum += object.sum;
  23. }
  24. }
  25. function def_props_array()
  26. {
  27. var array = [];
  28. Object.defineProperties(array,
  29. {
  30. 0: { get: function() { WScript.Echo("array[0]"); } },
  31. 1: { get: function() { WScript.Echo("array[1]"); } }
  32. });
  33. var sum = 0;
  34. for (var i = 0; i < 3; i++)
  35. {
  36. sum += array[0];
  37. }
  38. }
  39. function def_props_object()
  40. {
  41. var object = {};
  42. Object.defineProperties(object,
  43. {
  44. sum1: { get: function() { WScript.Echo("sum1"); } },
  45. sum2: { get: function() { WScript.Echo("sum2"); } }
  46. });
  47. var sum = 0;
  48. for (var i = 0; i < 3; i++)
  49. {
  50. sum += object.sum1;
  51. }
  52. }
  53. function def_props_number()
  54. {
  55. function diag() {
  56. WScript.Echo("Type: " + (typeof this));
  57. WScript.Echo(" Is Object: " + (this instanceof Object));
  58. WScript.Echo(" Is Number: " + (this instanceof Number));
  59. }
  60. Object.defineProperty(
  61. Number.prototype,
  62. "foo",
  63. {
  64. set: diag
  65. });
  66. Object.defineProperty(
  67. Number.prototype,
  68. "42",
  69. {
  70. set: diag
  71. });
  72. var runTests = function(obj) {
  73. WScript.Echo("** Testing property 'foo'");
  74. obj.foo = {};
  75. WScript.Echo("");
  76. WScript.Echo("** Testing property 42");
  77. obj[42] = {};
  78. WScript.Echo("");
  79. }
  80. var i = 3;
  81. runTests(i);
  82. var d = 3.14;
  83. runTests(d);
  84. }
  85. function main()
  86. {
  87. def_prop_array();
  88. def_prop_object();
  89. def_props_array();
  90. def_props_object();
  91. def_props_number();
  92. }
  93. main();