3

Window.prototype.confirm和 和有什么不一样Window.confirm

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

在 javascript 中有一个调用

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

哪个负责弹出确认窗口

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

所以我只是想知道是否Window.prototype.confirmWindow.confirm相同,如果不是有什么区别?

4

2 回答 2

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
于 2013-04-17T11:47:19.287 回答
1

它与 JavaScript 的原生继承模型有关。

  1. 您访问Window原型的confirm方法。

    Window.prototype.confirm

  2. 您可以访问名为 window 的 Window 实例的 confirm 方法。

    window.confirm(注意小写 w)

如您所见, window 是 Window 的一个实例,这意味着如果您更改 window.confirm ,则您仅针对此特定实例更改了它。Window 的其他实例将具有原始功能。但是,如果您更改 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
于 2013-04-17T11:54:05.020 回答