gpt4 book ai didi

javascript - 用逻辑加载对象

转载 作者:行者123 更新时间:2023-12-02 17:25:23 24 4
gpt4 key购买 nike

我相信解决我的问题相对容易。我就是没看到。

我有一个对象:

function MyObject(){
this.attr = "anything";
}

MyObject.prototype.doSomething = function(){
// logic
}

我使用new MyObject()创建对象。我使用它,当我想退出我所做的事情时,我只需将其存储到数据库(mongodb)中。在mongo中它是这样存储的:

{ "attr" : "anything" }

当我从数据库加载对象时,我只有简单的对象文字,没有任何逻辑。方法缺失。我明白为什么;)但我不知道如何再次将逻辑添加到对象文字中......

问题

如何再次用原始逻辑装饰检索到的对象?让它再次看起来像这样:

{       
"attr" : "anything",
"doSomething": doSomething()
}
  • 如何简单地做到这一点?
  • 还有其他方法吗(除了存储方法和所有原型(prototype)层次结构之外)?

最佳答案

创建一个加载函数,将您获取的对象的所有属性加载回您自己的对象中。

您可以将对象属性名称作为关联数组索引进行访问。

所以 myobj.attrmyobj['attr'] 相同。

这有助于将数据动态插入到对象中,同时保持对数据的完全控制(我个人最喜欢的):-)

您可以添加一些额外的检查来防止多余的数据或做一些您想做的额外事情。例如修改时间戳。

function MyObject(data){
if(typeof data !== 'undefined') {
this.load(data);
}
else {
this.attr = "anything";
}
}

MyObject.prototype.doSomething = function(){
// logic
}
MyObject.prototype.load = function(data) {
for(var key in data) {
if(data.hasOwnProperty(key)) {
this[key] = data[key];
// Just sample validation check. wahtever you want.
if(key == 'timestamp') {
if(this[key] < new Date().getTime()-4000) {
this[key] = new Date().getTime();
}
}
}
}
}

关于javascript - 用逻辑加载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com