windows .prototype.confirm和windows .confirm的区别



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

我正在处理一个更改请求,其中说我们需要在确认消息框上有一个标题。我正在检查弹出确认窗口的代码。

在javascript中有对

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

负责弹出确认窗口

我在谷歌搜索有一个javascript函数像窗口。确认我们不能设置标题的地方,我们需要编写一些自定义javascript函数来做相同的

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

你没有看到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

这与javascript的原生继承模型有关。

  1. 进入Window原型的确认方法

    Window.prototype.confirm

  2. 你访问一个名为Window的实例的confirm方法

    窗口。确认(注意小写w)

正如你所看到的,window是window的一个实例,这意味着如果你改变了window。确认您只针对此特定实例更改了它。Window的其他实例将具有原始功能。但是如果你改变了Window原型的confirm函数,那么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

最新更新