gpt4 book ai didi

javascript - 将原型(prototype)添加到 JSON 字符串中的所有对象

转载 作者:行者123 更新时间:2023-11-30 17:43:41 25 4
gpt4 key购买 nike

我希望针对从数据库收到的记录创建一个方法原型(prototype)。

我找到了 this answer已经,但它要求您为每个已有的对象实例化一个新对象。这看起来工作量很大,但可能是唯一的方法。

有没有一种方法可以将方法原型(prototype)化到 JSON 字符串中的所有对象上,而不涉及为每条记录实例化一个新对象?

最佳答案

正如我在评论中所说,您可以在 JSON 解析中使用一个简单的 reviver 函数,只要您记住这些键即可。看到这个 jsFiddle:http://jsfiddle.net/38Ytc/3/这是一个示例,假设您在某处获得了 JSON 字符串(在示例中,来自文本框),并且您需要向该数据返回的对象添加某些功能。然后我们用 reviver 函数作为第二个参数调用 parse,它将为数据结构中的每个键调用。对于我们的最小示例,它会将除顶级对象(键“”)之外的所有非数组对象转换为 DataRow 对象,该对象具有方法 getset保存

var inputEl = $("#exampleInput");
var outputEl = $("#exampleOutput");

function DataRow(contents) {
this.object = contents;
}
DataRow.prototype.get = function(key) {return key?this.object[key].object:this.object;};
DataRow.prototype.set = function(key, val) {if (key) {this.object[key] = val;} else {this.object = val;};};
DataRow.prototype.save = function() {/*Save to DB or whatever*/};

inputEl.change(function() {
var resultObject = JSON.parse( inputEl.val(),function(key, val) {
if (key === "" || typeof val === Array) { //See MDN for why this is necessary
return val;
} else {
return new DataRow(val);
}
});
console.log(resultObject.entries.object[0].get("title"));
outputEl.val(JSON.stringify(resultObject));
});

完成此处理后,您可以简单地使用 resultObject.entries.object[0].get("title") 获取对象的标题(如果存在)。

引用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

关于javascript - 将原型(prototype)添加到 JSON 字符串中的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20552608/

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