En este código creé una función llamada someFunction. Luego modifiqué Function.prototype.apply y call methods. Entonces, en lugar de que mi código de función funcione, estoy ejecutando mi código de interceptación (que muestra una alerta). Pero ni "llamar" ni "aplicar" intercepta la llamada al método directo. ¿Es posible interceptar esto?¿Puedo interceptar una función llamada directamente?
Function.prototype.call = function(){alert("call");};
Function.prototype.apply = function(){alert("apply");};
function someFunction(){}
window.onload = function(){
someFunction.call(this); //call alert is shown
someFunction.apply(this); //apply alert is shown
someFunction(); //how can I intercept this?
}
Tal vez pueda cambiar la función Function.constructor por lo que cada función vuelto tendrá su envoltura alrededor de ella. – yilmazhuseyin
@yilmazhuseyin: no, no puedes. Cambiar el constructor * Function * solo le permitiría anular funciones creadas con 'new Function (str)'. –
sí, tienes razón. function newConstructor() {alert ("a");}; Function.prototype.constructor = newConstructor; no funcionó. – yilmazhuseyin