Javascript 创建C+的最佳且高效的方法+;JS中类似结构的东西
我有一个JSON数据,在我的JS代码中作为Javascript 创建C+的最佳且高效的方法+;JS中类似结构的东西,javascript,json,node.js,Javascript,Json,Node.js,我有一个JSON数据,在我的JS代码中作为 let CreateIssueFormData = (function() { return { "fields": { "project": { "key": "NC" }, "issuetype": { "id": "" }, "compo
let CreateIssueFormData = (function() {
return {
"fields": {
"project": {
"key": "NC"
},
"issuetype": {
"id": ""
},
"components": [{
"id": ""
}],
"summary": "",
"description": "",
"labels": [],
"timetracking": {
"originalEstimate": "1w",
"remainingEstimate": "5d"
}
}
}
});
我把它当作
let formData = new CreateIssueFormData();
formData.fields.issuetype.id = reqParams.issuetype;
formData.fields.components[0].id = reqParams.component;
formData.fields.summary = reqParams.summary;
formData.fields.description = reqParams.description;
我首先创建了类一样的数据结构,这样每当我需要它时,我都会实例化一个对象,并给那个实例它的值
还声明了类似于struct的语句,让我知道对象中应该有什么
问题:
我已经开始JS几个月了,而且之前我用C++编写代码。p> 用Javascript轻松实现这一点的最佳方法。Javascript没有结构,因此在这种情况下使用对象绝对是最有效的方法
现在,如果它是最好的方法,那就取决于你想用它做什么,例如,如果你喜欢这种语法风格,你也可以使用一个类。但是,ES5或以下的课程不适用。请查看 在您的情况下,可以创建构造函数:let CreateIssueFormData = function() {
this.fields = {
project: {
key: "NC"
}
}
}
let formData = new CreateIssueFormData()
formData.fields.project.key = reqParams.key
嗯,让函数返回对象的骨架是没有用的。更好地使用该函数是将其传递给reqParams:
let CreateIssueFormData = function(reqParams) {
// if reqParams is null, use an empty object
reqParams = reqParams || {};
return {
"fields": {
"project": {
"key": "NC"
},
"issuetype": {
"id": reqParams.issuetype || "" // after the || is the default value if issueType is null/undefined, you can put what you want
},
"components": [{
"id": reqParams.component || ""
}],
"summary": reqParams.summary || "",
"description": reqParams.description || "",
"labels": [],
"timetracking": {
"originalEstimate": "1w",
"remainingEstimate": "5d"
}
}
}
};
// this will have some fields with values
let formData = new CreateIssueFormData(reqParams);
// this is a skeleton only with no values
let emptyFormData = new CreateIssueFormData();
现在,该功能非常有用,可以节省您的腿部工作。是的。。。。我喜欢这个主意。我这样使用JSON的目标也是使我的函数体更小。我希望使用这种样式可以增加一个用途;该语句将创建一个克隆,还是只是一个引用来向该函数传递参数???不,它不会创建克隆,检查是否确实收到了reqParams是安全的。这与
if(reqParams==null)reqParams={}
相同。您可能知道,Javascript中的所有参数都是可选的,因此有时您必须检查是否确实收到了参数。参数是按值传递的,因此没有引用问题。我有一个问题。。。如果我使用上述模式,如何添加私有成员?您可以通过在构造函数中将私有方法声明为变量(使用var
或let
)来获得私有方法。在这种情况下,它们不会公开,因此您将实现封装。