2012-04-26 9 views
3
if(!sky.containers) sky.containers = 
{ 
     Window : function() 
     { 
       this.element = document.createElement("div"); 
       this.element.modal = false; 
       this.element.height = 240; 
       this.element.draggable = true; 
       this.element.resizable = true; 
       this.element.position = "center"; 
       this.element.width = 240; 
       this.element.target = document.body; 
       this.element.title =""; 
       this.element.headerHeight = 30;; 
       this.element.effects = {}; 
       this.element.show = function() 





       return this.element; 

     }} 

theresのは何の変数聖霊降臨祭にこの名前を定義していない場合、キーワードは?「sky.containers」または「ウィンドウ」は、この文脈では、これは何ですか?そして、ELEMENTは何ですか?JavascriptのキーワードTHISとELEMENT

+0

console.log(this)またはalert(this)を実行して、 'this'の詳細を確認してください。 –

+0

はこう言います:[オブジェクト、オブジェクト] – ozsenegal

+0

アラートを使わないでください。特に、Chromeの場合はconsole.log、Firebugの場合はもっと冗長な出力を使用してください。アラートはそれほど有益ではありません。このコンテキストでは、F12 – Matt

答えて

4

Window()はコンストラクタ関数です。それはあなたが作成したばかりの新しいオブジェクトを参照する関数内部

var myWin = new Window(); 

thisのようなもので、新しいオブジェクトを作成するときに、それが呼び出されることを意味します。上記の例ではmyWinに割り当てられています。

「要素」は、新しく作成されたオブジェクトのプロパティです。これは、この行までは存在しません:新しい< div>要素を作成し、プロパティにそれのDOM表現を割り当て

this.element = document.createElement("div"); 

を。

+0

この関数以外は 'this.element'が返されます。そのような機能はコンストラクタとして機能しないように見えるので、 'myWin'にはWindowオブジェクトではなく新しいdiv要素が含まれています。 –

+0

"this.element.modal"、 "this.element.width"はbeacuseモーダルでのみ動作し、widthは作成された前のDIV DOM要素のプロパティ... rightですか? – ozsenegal

+0

@Michael - no。コンストラクタの戻り値は 'new'呼び出しの戻り値に影響を与えません。 –