Я только что обнаружил, что мы можем перехватить собственный вызов javascript alert() и перехватить пользовательский код до фактического выполнения. посмотрите пример кода..
function Test(){
var alertHook=function(aa){
this.alert(aa);
}
this.alert("aa");
this.alert = alertHook;
alert("aa");
}
поэтому каждый раз, когда я вызываю предупреждение («аа»), оно перехватывается моей локальной функцией alertHook. Но приведенная ниже реализация с небольшим изменением не работает.
function Test(){
var alertHook=function(aa){
alert(aa);
}
alert("aa");
alert = alertHook; //throws Microsoft JScript runtime error: Object doesn't support this action
alert("aa");
}
выдает ошибку выполнения Microsoft JScript: объект не поддерживает это действие.
Я не знаю, как это.alert = alertHook; позволь мне перехватить звонок, но alert=alertHook; нет.??
Итак, я предполагаю, что использую это для перехвата любых собственных методов js.? это правильно?
И это приемлемо? потому что таким образом я могу полностью заменить любые собственные вызовы JS своими собственными методами ??
ОБНОВЛЕНИЕ:
Я спросил, это приемлемо? потому что, как это хороший подход с eval() и предоставлением пользователям возможности заменить собственные вызовы функций?
И его обязанность языка защищать разработчиков от вводящих в заблуждение функций, замена собственных вызовов js на уровне окна (или в общем js-файле фреймворка) приведет к сбою всей системы ... не так ли ??
я могу ошибаться, потому что я не понимаю причину этой функции ..? Я никогда не видел языка, который позволял бы разработчику заменить свою собственную реализацию.