freeze.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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("TestCase1");
  10. write(Object.freeze.length);
  11. write(Object.isFrozen({}));
  12. write("TestCase2 - freeze & add a property");
  13. var a = {x:20, y:30};
  14. Object.freeze(a);
  15. SafeCall(function() { a.z = 50; });
  16. write(Object.getOwnPropertyNames(a));
  17. write(Object.isFrozen(a));
  18. write("TestCase3 - freeze & delete a property");
  19. var a = {x:20, y:30};
  20. Object.freeze(a);
  21. SafeCall(function() { delete a.x; });
  22. write(Object.getOwnPropertyNames(a));
  23. write(Object.isFrozen(a));
  24. write(a.x);
  25. write("TestCase4 - freeze & modify a property");
  26. var a = {x:20, y:30};
  27. Object.freeze(a);
  28. SafeCall(function() { a.x = 40; });
  29. SafeCall(function() { a.y = 60; });
  30. write(Object.getOwnPropertyNames(a));
  31. write(Object.isFrozen(a));
  32. write(a.x);
  33. function SafeCall(f)
  34. {
  35. try
  36. {
  37. f();
  38. }
  39. catch (e)
  40. {
  41. write("Exception: " + e.name);
  42. }
  43. }