3

Window.prototype.confirmとはどう違いWindow.confirmますか?

We need to have a title on confirm message box という変更リクエストに取り組んでいます。この確認ウィンドウをポップアップするコードを調べていました。

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 コンソールに 1 つずつ入力すると、これが明らかになることがあります。( の後に部分を入力する>と、その下に表示される内容が出力されます。)

> 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 に答える