Window.prototype.confirm和Window.confirm之间的区别

时间:2013-04-17 11:26:19

标签: javascript

Window.prototype.confirmWindow.confirm之间的区别是什么?

我正在处理一个更改请求,说我们需要在确认消息框上有一个标题。我刚刚浏览了弹出此确认窗口的代码。

在javascript中有一个对

的调用
Window.prototype.confirm = function(arg){return false;}; 

负责弹出确认窗口

我在谷歌搜索有一个像window.confirm这样的javascript函数,我们无法设置标题,我们需要编写一些自定义的javascript函数来做同样的事情

所以我只是在讨论Window.prototype.confirmWindow.confirm是否相同,如果没有,有什么区别?

2 个答案:

答案 0 :(得分:2)

您还没有看到Window.confirm,它是window.confirm

逐一在Chrome JavaScript控制台中键入以下行,这可能有助于阐明这一点。 (在>之后键入部分,它将打印出您在下面看到的内容。)

> window.constructor
  function Window() { [native code] }
> window.constructor === Window
  true
> window.confirm === Window.prototype.confirm
  true
> window.confirm = function() { alert('oops'); };
  function () { alert('oops'); }
> window.confirm === Window.prototype.confirm
  false

答案 1 :(得分:1)

它与JavaScripts本机继承模型有关。

  1. 您可以访问Window原型的确认方法。

    Window.prototype.confirm

  2. 您可以访问Window命名窗口实例的confirm方法。

    window.confirm(通知小写w)

  3. 正如您所看到的,window是Window的一个实例,这意味着如果您更改window.confirm,则仅为此特定实例更改了它。 Window的其他实例将具有原始功能。但是,如果您更改Window原型的确认功能,那么窗口的所有实例都将使用新实现。

    使用自定义对象来说明。

    function MyObject () {
    
    }
    
    MyObject.prototype.test = function () {
         alert('A');
    }
    
    var myobj1 = new MyObject();
    var myobj2 = new MyObject();
    
    myobj1.test(); // alerts A
    myobj2.test(); // alerts A
    
    myobj1.test = function () { alert('B'); };
    
    myobj1.test(); // alerts B
    myobj2.test(); // alerts A
    
    MyObject.prototype.test = function () { alert('C'); };
    
    myobj1.test(); // alerts C
    myobj2.test(); // alerts C