2012-06-13 74 views
0

我是新來的面向對象的編程在JavaScript中,我試圖瞭解我正在工作的項目中的一些功能。如何運行嵌套的javascript函數?

我將如何調用/運行內部函數(列出'this.getFieldset = function(){')來執行?

function Fieldset() { 

    this.id = ""; 
    this.content = document.createElement("DIV"); 
    this.content.id = "content"; 
    this.title = "Title"; 

    this.getFieldset = function() { 

     var div = document.createElement("DIV"); 
     div.id = this.id; 
     var span = document.createElement("SPAN"); 
     var fieldset = document.createElement("DIV"); 
     fieldset.id = "fieldset"; 
     var header = document.createElement("DIV"); 
     header.id = "header"; 
     span.appendChild(document.createTextNode(this.title)); 
     header.appendChild(span); 
     div.appendChild(header); 
     div.appendChild(this.content); 
     div.appendChild(fieldset); 

     return div; 
    } 
} 

var myFieldset = new Fieldset(); 
myFieldset.getFieldset(); 
+0

我建議通過[MDN閱讀 - 有工作對象(https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Objects)。 –

+1

你想從哪裏執行它? – Sebas

回答

6

首先,你應該創建Fieldset一個實例,然後你就可以調用它的函數(稱爲方法):

var myFieldset = new Fieldset(); 

myFieldset.getFieldset(); 
+0

我想在運行這個時候會讓我推測myFieldset.getFieldset()會運行哪個是創建一個DIV,SPAN等。不是說要超出範圍,但不應該寫入頁面? – fakeguybrushthreepwood

+1

@ peteskiii:不,您不要在任何地方附加創建的「div」。它由'getFieldset'返回,所以用它做點什麼;) –

+0

但是當我運行這段代碼時,什麼都沒有發生,我在對象檢查器中沒有看到任何東西? – fakeguybrushthreepwood

0
function Fieldset() { 

    this.id = ""; 
    this.content = document.createElement("DIV"); 
    this.content.id = "content"; 
    this.title = "Title"; 

    this.getFieldset = function() { 

     var div = document.createElement("DIV"); 
     div.id = this.id; 
     var span = document.createElement("SPAN"); 
     //var fieldset = document.createElement("DIV"); 
     //fieldset.id = "fieldset"; 
     var header = document.createElement("DIV"); 
     header.id = "header"; 
     span.appendChild(document.createTextNode(this.title)); 
     header.appendChild(span); 
     div.appendChild(header); 
     div.appendChild(this.content); 
     div.appendChild(fieldset); 

     window.alert("test"); 

     return div; 
    } 

    //add call to run function 
    this.getFieldset(); 

} 
+0

我認爲他的意思是從外部執行。 –

+0

既然他沒有暗示,我沒有假設。你知道他們對假設的看法。 –

+0

我試圖更新代碼示例以更好地顯示我正在嘗試實現的內容。 – fakeguybrushthreepwood