values-unscopables.js   [plain text]


function test(actual, expected) {
    if (actual !== expected)
        throw new Error('bad value: ' + actual);
}

(function () {
    var array = [];
    var values = 42;

    with (array) {
        test(values, 42);
    }

    array[Symbol.unscopables].values = false;

    with (array) {
        test(values, Array.prototype.values);
    }
}());

(function () {
    var map  = new Map();
    var values = 42;

    with (map) {
        test(values, Map.prototype.values);
    }

    map[Symbol.unscopables] = {
        values: true
    };

    with (map) {
        test(values, 42);
    }
}());

(function () {
    var set  = new Set();
    var values = 42;

    with (set) {
        test(values, Set.prototype.values);
    }

    set[Symbol.unscopables] = {
        values: true
    };

    with (set) {
        test(values, 42);
    }
}());