Я нахожусь в процессе истинного изучения нюансов работы с объектами JavaScript и столкнулся с загадкой.
У меня есть набор «пространств имен» для сегментирования DOM и Model, на которые нужно действовать. Ниже приведен код:
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
проходит; однако второй тест разрешает sandbox2.model.FirstName
в «Джеймс» (начальное значение).
У кого-нибудь есть какие-либо рекомендации о том, как я могу изменить код (исходный или тестовый), чтобы позволить мне сопоставить значения объекта page
с объектом model
?