Я запускаю самозаполняющуюся функцию, и я хотел бы изменить в ней объект Array и только в его области.
var foo = "Foo Outer";
(function(){
var foo = 'Foo Inner !';
console.log('INNER>',foo);
// prints INNER> Foo Inner !
var Array = {};
var Array = Object.getPrototypeOf([]).constructor;
Array.prototype.filter = ()=>{return "Array filter inner"}
console.log('INNER> array filter literal:', [1,2,3].filter(x=>x));
// prints INNER> array filter literal:Array filter inner
})()
console.log('OUTER> foo ', foo);
// prints OUTER> foo Foo outer
console.log('OUTER> Array filter', [1,2,3].filter(x=>x));
// prints OUTER> Array filter Array filter inner
// I want ->
// OUTER> Array Filter [1,2,3]
Как я могу изменять теневой массив и его методы только внутри область действия вызываемой самостоятельно функции, сохраняя при этом то же самое для остальной части скрипта?