假设您有一个服务器端Javascript应用程序,并且您从客户端收到以下数据:
[
{
"userId": "0001",
"Details": [
{
"Name": "John",
"Surname": "Doe",
"bankAccount": "123"
}
]
}
]
将此数据封装到Javascript对象中是一种好习惯吗?例如,
var Person = (function () {
var bankAccount = "";
function Person(userId, name, surname, bankAccount) {
this.userId = userId;
this.name = name;
this.surname = surname;
this.getBankAccount = function() {
return this.bankAccount;
};
this.setBankAccount = function(ba) {
this.bankAccount = ba;
};
}
return Person;
})();
通过这种方式,我可以控制涉及用户敏感数据的操作:
var p = new Person(1, "John", "doe", "123");
p.name
=> 'John'
p.bankAccount
p.getBankAccount()
p.setBankAccount(123)
p.getBankAccount()
=> 123
但是,如果我需要将这些数据保存到像MongoDB这样的NoSQL数据库中,我需要将所有内容序列化为JSON,这不是很奇怪吗?我想知道你对这种做法有什么想法。
答案 0 :(得分:3)
将纯JavaScript对象封装在某种界面中有几个优点,其中mehtod将get
或set
为您的值。
实际上有很多框架可以帮助你。
var Person = Backbone.Model.extend();
var person = new Person({id : 1, name : "Peter"});
person.get("id");
// -> 1
person.get("name");
// -> Peter
一个优点是您可以定义自己的parsing
函数,这些函数将从服务器获取JSON并根据需要对其进行转换。
另一个优点是您可以使用事件将您的第12个连接到设置过程中。
person.on("change:name", function() { console.log("changed..."); });
person.set("name", "Frank");
// the change callback gets fired.
此外,您可以在需要保留数据时将对象转换回纯JavaScript对象。
// in Backbone
person.toJSON();
// -> {id:1, name:"Peter"}
如果我们在谈论服务器上的技术,那么你既不需要框架也不需要getter或setter作为函数,因为你可以使用get
和{{ 1}}语法
set