Vic*_*scó 3 javascript prototype node.js
我创建了一个类 User.它有一些属性,如:名称,ID,密码等.
我已经设置了一个构造函数:
function User(name1, email, password) {
this.name = name1;
this.id = __GUID();
this.type = __TYPE;
this.addNewEmail(email);
this.password = (new Password).createFromRawPassword(password).crypt;
}
Run Code Online (Sandbox Code Playgroud)
一些原型功能如:
User.prototype.save = function(cb, callback) {
return cb.bucket.upsert(this.id, this, function(err, res) {
if (callback == null) {
return callback(err, res);
}
});
};
User.prototype.addNewEmail = function(email) {
this.emails = this.emails || [];
return this.emails.push(email);
};
Run Code Online (Sandbox Code Playgroud)
这对我来说非常好用,让我将我的对象存储为序列化的JSON(在带有NodeJS的couchbase数据库中),而不在对象中包含函数.
当我从DB获取对象时出现问题.它带有所有属性,如存储,但我需要添加功能.我试图使用extend我发现的mixins的一些函数,但是他们将函数添加为ownProperties,因此,下次我将更新的记录保存到DB时,我得到了保存的函数.
如何将接收的对象再次转换为User类型的对象?要使类的必需方法也出现在实例上.
多种方式:
这与你的方式大致相同:
Object.setPrototypeOf(instance, User.prototype)
Run Code Online (Sandbox Code Playgroud)
您可以实例化一个新对象并复制属性:
var obj = Object.assign(Object.create(User.prototype), instance);
Run Code Online (Sandbox Code Playgroud)
您可以使用任何extend实现而不是Object.assign(它本身不可用)
或者您可以更改User实现以将所有字段存储在单个属性(即对象)中
| 归档时间: |
|
| 查看次数: |
1185 次 |
| 最近记录: |