私は、JavaScript オブジェクトの操作のニュアンスを真に学んでいる途中で、思わぬ障害に遭遇しました。
DOM とモデルをセグメント化するための「名前空間化された」オブジェクトのセットがあります。以下はコードです:
function Sandbox2(){
this.page = {
FirstName: document.getElementById("FirstName")
, LastName: document.getElementById("LastName")
, Email: document.getElementById("Email")
};
this.model = {
FirstName: "James"
, LastName: "Eggers"
, Email: "James.R.Eggers@gmail.com"
};
this.behavior = {};
this.bindPageToModel = function(){
for(var property in this.page){
if (property){
property.value = this.model[property];
}
}
};
this.bindModelToPage = function(){
for(var property in this.model){
if (property){
this.model[property].value = this.page[property];
}
}
};
};
JsTestDriver を使用して、いくつかのテストを行って、ページ オブジェクトとモデル オブジェクトのいくつかを試してみました。具体的なテストは次のとおりです。
"test ModelBinding should be allowed." : function(){
var sandbox2 = new Sandbox2();
var page = sandbox2.page;
page.FirstName = "Test";
page.LastName = "Account";
sandbox2.bindModelToProperty();
assertEquals("Ensure the new values took.", page.FirstName, sandbox2.page.FirstName);
assertEquals("New Page values should be in the model.", "Test", sandbox2.model.FirstName);
}
上記のテストでは、最初にassertEquals
パスします。ただし、2 番目のテストはsandbox2.model.FirstName
"James" (初期値) に解決されます。
page
オブジェクトの値をオブジェクトにマップできるようにコード (オリジナルまたはテスト) を変更する方法について、誰にも推奨事項はありmodel
ますか?