| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- //
- // Test for-in enumerating properties on prototype of primitives
- //
- var echo = WScript.Echo;
- function guard(f) {
- try {
- f();
- } catch (e) {
- echo(e);
- }
- }
- Object.prototype.object_value = "value on Object.prototype";
- Object.defineProperty(
- Object.prototype, "object_getter", {
- get: function () { return "getter on Object.prototype: " + typeof(this) + " " + this; },
- enumerable: true,
- configurable: true
- });
- Number.prototype.number_proto = "Value on Number.prototype";
- Boolean.prototype.boolean_proto = "Value on Boolean.prototype";
- String.prototype.string_proto = "Value on String.prototype";
- // Test on special values and primitives
- var tests = [
- null,
- undefined,
- Number.NaN,
- 0.4,
- -0,
- 0,
- 1,
- "",
- true,
- false,
- // Special values around Int32/Int31 boundary
- 0x80000000,
- 0x7FFFFFFF,
- 0x40000000,
- 0x3FFFFFFF,
- -0x3FFFFFFF,
- -0x40000000,
- -0x40000001,
- -0x80000000,
- -0x80000001,
- ];
- tests.forEach(function (a) {
- echo("---- Test:", a, "----");
- guard(function () {
- echo(a.object_value); // Get from prototype
- });
- guard(function () {
- echo(a.object_getter); // Getter on prototype
- });
- echo();
- for (var p in a) { // Enumerate properties should walk prototype
- echo(" ", p);
- }
- echo();
- });
|