createdp.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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(args)
  6. {
  7. WScript.Echo(args);
  8. }
  9. write("Test case 1");
  10. function base() {}
  11. var b = new base();
  12. var prop = new Object();
  13. var d = Object.create(b);
  14. write(typeof d);
  15. write(Object.getOwnPropertyNames(d));
  16. write("Test case 2");
  17. var prop = {b:{value:10},c:{value:30},d:{value:70}};
  18. Array.prototype[1]=10;
  19. var a = Object.create(Array.prototype, prop);
  20. WScript.Echo(Object.getOwnPropertyNames(a));
  21. WScript.Echo(a[1]);
  22. write("Test case 3");
  23. var prop = {b:{value:10},c:{value:30},d:{value:70}};
  24. var a = Object.defineProperties({}, prop);
  25. WScript.Echo(Object.getOwnPropertyNames(a));
  26. WScript.Echo(a.b);
  27. write("Test case 4");
  28. var gettersetter = {get: function(){write("In getter");},set: function(arg){write("In setter")}};
  29. var prop = {gs: gettersetter, bar: {value:10}};
  30. var a = Object.defineProperties({}, prop);
  31. WScript.Echo(Object.getOwnPropertyNames(a));
  32. a.gs;
  33. a.gs=10;
  34. write("Test case 5");
  35. Object.defineProperty(
  36. Number.prototype,
  37. "p",
  38. {
  39. get: function () { write("In getter"); },
  40. set: function (v) { write("In setter"); },
  41. configurable: true,
  42. enumerable: true
  43. });
  44. var o = 1;
  45. o.p;
  46. o.p = 2;
  47. delete Number.prototype.p;
  48. write("Test case 6 - simple dictionary");
  49. var obj = {};
  50. Object.defineProperty(Object.prototype, "data", { value:"qrs", enumerable:true, writable:true, configurable:true });
  51. // add user defined property
  52. Object.defineProperty(obj, "data", { value:10, enumerable:true, writable:true, configurable:true });
  53. // remove user defined property <--- remove this and it works as expected
  54. delete obj.data;
  55. // should be global property <--- remove this and it works as expected
  56. write("Is global: " + (obj.data === "qrs"));
  57. // redeclare user defined property
  58. Object.defineProperty(obj, "data", { value:10, enumerable:true, writable:true, configurable:true });
  59. write("Is local again: " + (obj.data === 10));
  60. write("Test case 7 - dictionary");
  61. var obj = {};
  62. Object.defineProperty(Object.prototype, "data", { value:"qrs", enumerable:true, writable:true, configurable:true });
  63. // add user defined property
  64. Object.defineProperty(obj, "data", { get: function(){}, enumerable:true, configurable:true });
  65. // remove user defined property <--- remove this and it works as expected
  66. delete obj.data;
  67. // should be global property <--- remove this and it works as expected
  68. write("Is global: " + (obj.data === "qrs"));
  69. // redeclare user defined property
  70. Object.defineProperty(obj, "data", { value:10, enumerable:true, writable:true, configurable:true });
  71. write("Is local again: " + (obj.data === 10));