Можно ли добавить функцию к захваченному массиву JavaScript?

Этот вопрос связан с Какими рекомендациями следует следовать при объявлении массива в Javascript?


Скажем, у клиента, назовем его "Д. Б. Купер" , есть первое требование: следующий код должен запускаться перед любым другим кодом JavaScript:

Array = function(){
    alert('Mwahahahaha');
};

Кроме того, Купер требует, чтобы пользовательские функции добавлялись к встроенному Arrayобъекту (, а не к угнанному ). Например, если Arrayбыл разблокирован, это можно сделать с помощью:

Array.prototype.coolCustomFunction = function(){
    alert('I have ' + this.length + ' elements!  Cool!');
};

Что позволило бы:

var myArray = [];
myArray.coolCustomFunction();

Однако это не совместимо с первым требованием. Итак, как лучше всего выполнить оба требования Д. Б. Купера?

Примечание:Д.Б. даже писалтестовая скрипкапомочь удостовериться, что решения соответствуют его требованиям... какой парень!


Обновление: Для тех из вас, кто любит вызов :, пожалуйста, попробуйте найти кросс-браузерное -решение этой проблемы, которое невозможно перехватить. Например, вот еще более захваченный тестовый пример (спасибо за переформатирование этого Берги ), который захватывает Array, Object, Array.prototype.constructor и Object.prototype.constructor. На данный момент похоже, что может быть решение для браузера -для этого (, см. комментарий Берги к его ответу , и дайте нам знать, если вы найдете способ взломать его в FF ). ], но на данный момент неясно, существует ли кросс-браузерное -решение для этого.

6
задан Bhargav Rao 19 July 2018 в 22:11
поделиться