2011-06-17 11 views
1

私はこのコードをインターネットで見つけました。これは、印刷機能を実装するプラグインに関するものです。私はちょうど新しいオペレータがその機能を呼び出す間に何を意味するのだろうと思っています。JQueryの新しい演算子の意味

$.fn.printArea = function(options) 
{ 
    printWindow = new Popup(); 
    writeDoc = printWindow.doc; 
} 

function Popup() 
{ 
    var windowAttr = "location=yes,statusbar=no,directories=no,menubar=no,titlebar=no,toolbar=no,dependent=no"; 
    windowAttr += ",width=" + settings.popWd + ",height=" + settings.popHt; 
    windowAttr += ",resizable=yes,screenX=" + settings.popX + ",screenY=" + settings.popY + ",personalbar=no,scrollbars=no"; 

    var newWin = window.open("", "_blank", windowAttr); 

    newWin.doc = newWin.document; 

    return newWin; 
} 

誰かが新しいポップアップ関数を呼び出す合理的な理由を説明できれば、本当にありがたいです。

+0

ここに何か間違っています。ポップアップは単なる関数であり、クラスではありません。あなたはここで新しい '演算子'を使用することはできません – Sahal

答えて

4

newオペレータは、という新しいobjectを作成します。あなたが複数の異なるポップアップを持っているかどう この方法では、あなたが言ってそれらを作成することができます。

popup1 = new Popup(); 
popup2 = new Popup(); 

そして、あなたは彼らに自分のパラメータを与えることができるだろう。コメントにPSTに

EDITのおかげ

しかしこれは、ここでの状況ではありません。 「コンストラクタ」が返るので、「新しいオブジェクト」は黙って破棄され、newWinに含まれるオブジェクトが返されることに注意してください。

+0

面白いことは、私はそれがJavascriptでこのように働いていることさえ知りませんでした。 – Kokos

+0

面白いことですが、JavaScriptについてほとんど知らない人たちが毎日それに取り組んでいて、_internet_はまだ動作しています! – Raynos

+0

私はOOPとPHPで時間を過ごしていますが、まだ私のJavascriptには必要ではありません(私は思っています)。新しいものを毎日新しいものを学ぶ;) – Kokos

0

Popup(クラス)の新しいインスタンスがインスタンス化され、変数printWindowに割り当てられます。この場合Popup

+0

これは関数なので、関数名で呼び出すことができます。 – Nrusingha

+0

新しいキーワードで呼び出すと、この関数はwindowAttrとnewWinをプライベートプロパティとして持つクラスとして表示できます。それは混乱しますが、それはそれが動作する方法です。これを見てください:http://mckoss.com/jscript/object.htm – shinkou

+0

@shinkou本当にありません。それはそれとは異なります。 – Raynos

4
printWindow = new Popup(); 
// is the same as 
// create a new `this` scope for the Popup function from the prototype. 
var temp_this = Object.create(Popup.prototype); 
// call the function with the `this` context and store the result. 
var o = Popup.call(temp_this); 
// if the result is an object then assign it to the variable 
// otherwise assign the `this` value to the variable. 
printWindow = typeof o === "object" ? o : temp_this; 
// It actually does more. Go read the ES5 spec. 

thisが内部で返されていないためnewキーワードは役に立たないので、とにかくオブジェクトを返す愚かなコンストラクタです。

このポップアップ機能は、有効ではあるが役に立たないコードです。

+0

Popup()関数自体は、Popup()の新しいインスタンスではなく、新しい* window *オブジェクトを返します。しかし、コード自体は役に立たないと私は同意します。 – shinkou

+0

@shinkou私はexplerのコードをいくつか調整しましたが、今は単純です。( – Raynos

+0

私はこれまでにこのようなことを試していないし、想像もできませんでした。:) – shinkou

関連する問題