2015-10-14 122 views
0

我正在嘗試使用構造函數和2個方法創建JAvascript對象。我在嘗試使用以下代碼時遇到錯誤,我在做什麼錯誤?具體來說,它不會允許我定義如下所示的構造函數。Javascript對象的構造函數

var Feed = { 

    templateDOM: '', 

    function(tDOM) { 
     this.templateDOM = tDOM; 
    }, 

    loadFeed: function(feedPage, feedsPerPage) { 
     ... 
    }, 

    showFeed: function(data, tDOM, destination) { 
     ... 
    } 
}; 
+0

「它不會允許我定義構造函數」 - 你是什麼意思「不允許」?你有錯誤嗎? – Quentin

+0

是的 - 我的編輯器給出錯誤 – ChicagoSky

+0

錯誤是什麼? – Quentin

回答

2

您在這裏沒有創建構造函數。這是一個普通的對象,只有你忘記爲其中的第二個值提供一個屬性名稱。

如果你想創建一個構造函數,它看起來更像是這樣的:

function Feed(tDOM) { 
    this.templateDOM = tDOM; 
} 

Feed.prototype.loadFeed = function loadFeed(feedPage, feedsPerPage) { 
}; 

Feed.prototype.showFeed = function showFeed(data, tDOM, destination) { 
}; 

然後你就可以調用,如:

var my_feed = new Feed("some value"); 
myFeed.loadFeed("some value", "some other value"); 
+0

謝謝 - 當然看起來像我對JS對象的掌握需要更多的工作。但是,我感謝你花時間幫助 – ChicagoSky

1

我不認爲你的方法可以帶你到你想去的地方。在你的情況下,你使用對象文字。當你已經創建了一個對象時,你將如何使用構造函數?

我認爲,以下會更適合:

// Define a cosntructor 
function TemplateDom(tDom){ 
    this.templateDOM = tDOM; 
} 

,然後添加到原型你構造函數的方法:

// Add to the prototype of your constructor the following two functions. 
// So each object that will be created using this constructor would have 
// defined also those two methods. 
TemplateDom.prototype.loadFeed = function(feedPage, feedsPerPage) { 
    ... 
}; 

TemplateDom.prototype.showFeed = function(data, tDOM, destination) { 
    ... 
}; 

然後,您可以創建一個類似如下的對象:

var templateDom = new TemplateDom("here you pass a dom value"); 

並且您可以使用功能loadFeedshowFeed儘可能簡單

templateDom.loadFeed("feedpage value","feedsperpage value"); 
templateDom.showFeed("data value","tDom value","destination value");