我使用module pattern打造一個模式,這是接近完成一個小測驗。有一個在上面寫着「重試」,將重新啓動測驗測驗的最後一個按鈕,我有一個堅硬的時間思考的乾燥方式來設置屬性(應用程序瓦爾列表)重置其默認值。返回的JavaScript(jQuery的)對象屬性爲默認狀態
這是我現在所擁有的:
jQuery(function($) {
var s,
QuizApp = {
settings: {
timer: null,
isPaused: false,
count: null,
correctAnswer: null,
score: 0,
questionCounter: 1
},
init: function() {
s = this.settings;
this.questionsGet();
this.bindUIActions();
},
// Code omitted for event handlers and such
resetQuiz: function() {
s.timer = null;
s.isPaused = false;
s.count = null;
s.correctAnswer = null;
s.score = 0;
s.questionCounter = 1;
},
},
}; $(function() {
QuizApp.init();
});
});
不是很乾 - 實際上是相當糟糕的。我想要的是:
jQuery(function ($) {
var s,
QuizApp = {
settings: {
timer: null,
isPaused: false,
count: null,
correctAnswer: null,
score: 0,
questionCounter: 1,
defaults: { /* pseudo code to store settings here */ }
},
resetQuiz: function() {
s = s.defaults // pseudo code to reset the settings to the value stored in defaults
},
};
$(function() {
QuizApp.init();
});
});
或者更好的東西,如果你能想到它。我已經完成了大量的「重置對象屬性」和「克隆對象屬性」的搜索,但是我沒有找到解釋如何做到這一點的內容。顯然,jQuery可以使用。此外,我不明白如何/在哪裏存儲數據以及如何將數據映射回來,因爲我不完全理解這是什麼類型的數據(是「設置」對象屬性,而且它是值子屬性?或者它是一個多維數組?什麼我在存儲數據後檢索其默認值?等),所以任何一種深入的解釋或鏈接到的數據類型我們的信息在這裏工作是一個額外的好處!
爲什麼不保持默認設置爲私有變量,然後分配對象設置的克隆需要的時候? – Shreyas
什麼在世界上?有人編輯我的代碼並大規模屠殺它。現在修復,請再看一遍。 –
@Shreyas - 這聽起來像一個偉大的路要走。你介意給我一個代碼示例嗎? –