Object.defineProperty.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. try {
  2. var o = {};
  3. Object.defineProperty(o, "foo", { value: 1, writable: false, enumerable: false });
  4. assert(o.foo === 1);
  5. o.foo = 2;
  6. assert(o.foo === 1);
  7. var d = Object.getOwnPropertyDescriptor(o, "foo");
  8. assert(d.configurable === false);
  9. assert(d.enumerable === false);
  10. assert(d.writable === false);
  11. assert(d.value === 1);
  12. Object.defineProperty(o, "bar", { value: "hi", writable: true, enumerable: true });
  13. assert(o.bar === "hi");
  14. o.bar = "ho";
  15. assert(o.bar === "ho");
  16. d = Object.getOwnPropertyDescriptor(o, "bar");
  17. assert(d.configurable === false);
  18. assert(d.enumerable === true);
  19. assert(d.writable === true);
  20. assert(d.value === "ho");
  21. try {
  22. Object.defineProperty(o, "bar", { value: "xx", enumerable: false });
  23. assertNotReached();
  24. } catch (e) {
  25. assert(e.name === "TypeError");
  26. }
  27. Object.defineProperty(o, "baz", { value: 9, configurable: true, writable: false });
  28. Object.defineProperty(o, "baz", { configurable: true, writable: true });
  29. d = Object.getOwnPropertyDescriptor(o, "baz");
  30. assert(d.configurable === true);
  31. assert(d.writable === true);
  32. assert(d.value === 9);
  33. console.log("PASS");
  34. } catch (e) {
  35. console.log(e)
  36. }