Object.defineProperty.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. load("test-common.js");
  2. try {
  3. var o = {};
  4. Object.defineProperty(o, "foo", { value: 1, writable: false, enumerable: false });
  5. assert(o.foo === 1);
  6. o.foo = 2;
  7. assert(o.foo === 1);
  8. var d = Object.getOwnPropertyDescriptor(o, "foo");
  9. assert(d.configurable === false);
  10. assert(d.enumerable === false);
  11. assert(d.writable === false);
  12. assert(d.value === 1);
  13. Object.defineProperty(o, "bar", { value: "hi", writable: true, enumerable: true });
  14. assert(o.bar === "hi");
  15. o.bar = "ho";
  16. assert(o.bar === "ho");
  17. d = Object.getOwnPropertyDescriptor(o, "bar");
  18. assert(d.configurable === false);
  19. assert(d.enumerable === true);
  20. assert(d.writable === true);
  21. assert(d.value === "ho");
  22. assertThrowsError(() => {
  23. Object.defineProperty(o, "bar", { value: "xx", enumerable: false });
  24. }, {
  25. error: 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. }