Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何覆盖javascript本机对象的内置方法_Javascript_Overriding_Prototype Programming_Built In - Fatal编程技术网

如何覆盖javascript本机对象的内置方法

如何覆盖javascript本机对象的内置方法,javascript,overriding,prototype-programming,built-in,Javascript,Overriding,Prototype Programming,Built In,假设我们有窗口对象的警报方法。我想用漂亮的alertbox来增强它 此外,我还想保存现有的警报方法,以便我们可以在应用程序结束后切换回 类似这样,但在firefox控制台中抛出错误 window.prototype.alert = function(){ } 你可以 var base = window.alert; window.alert = function(message) { document.getElementById("myalertwidget").innerHTML

假设我们有窗口对象的警报方法。我想用漂亮的alertbox来增强它

此外,我还想保存现有的警报方法,以便我们可以在应用程序结束后切换回

类似这样,但在firefox控制台中抛出错误

window.prototype.alert = function(){

}
你可以

var base = window.alert;
window.alert = function(message) {
    document.getElementById("myalertwidget").innerHTML = message;
    return base.apply(this, arguments);
};

没有
窗口。原型
对象<代码>窗口
是javascript上下文的全局对象,它不是从原型创建的

但是,您希望通过以下代码实现:

window.old_alert = window.alert;  
window.alert = function(txt) {
      // do what you need
      this.old_alert(txt);
}

base.apply(这个,参数)
只需正确调用原始的
alert()
如果您希望这样做,实际上,有
窗口。prototype