MissingProtoInval.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 f1() {
  6. var o1 = {},o2 = {};
  7. var proto1 = {a:'a',b:'b'},proto2 = {a:'a'};
  8. o1.__proto__ = proto1;
  9. o2.__proto__ = proto2;
  10. function a(o) { return o.a; }
  11. function b(o) { return o.b; }
  12. a(o1);
  13. a(o2);
  14. b(o1);
  15. b(o2);
  16. proto2.__proto__ = {b:'b'};
  17. if (b(o2) !== 'b') {
  18. WScript.Echo('fail');
  19. }
  20. }
  21. f1()
  22. f1();
  23. function f2() {
  24. var o1 = {b:'b'},o2 = {b:'b'};
  25. var proto1 = {a:'a',b:'b'},proto2 = {a:'a'};
  26. o1.__proto__ = proto1;
  27. o2.__proto__ = proto2;
  28. function a(o) { return o.a; }
  29. function b(o) { return o.b; }
  30. a(o1);
  31. a(o2);
  32. delete o1.b;
  33. delete o2.b;
  34. b(o1);
  35. b(o2);
  36. proto2.__proto__ = {b:'b'};
  37. if (b(o2) !== 'b') {
  38. WScript.Echo('fail');
  39. }
  40. }
  41. f2();
  42. f2();
  43. WScript.Echo('pass');