Этот вопрос связан с Какими рекомендациями следует следовать при объявлении массива в 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 ). ], но на данный момент неясно, существует ли кросс-браузерное -решение для этого.