gpt4 book ai didi

javascript - 定义参数Json或对象

转载 作者:行者123 更新时间:2023-12-03 10:47:28 26 4
gpt4 key购买 nike

我有在屏幕上绘制一些控件的方法,现在我希望这个方法将是一个 API 并使其更加日常化,以便为用户提供决定他想要在屏幕上绘制哪个控件的能力。我想要求提供一些 json 结构,但不确定它是否比对象更好......,任何建议

例如

withSection1 true
withSection2 false
withSecttion3 false
withSection4 true
.....

但如果用户想要绘制全部而不是提供所有数据(部分),默认情况下会添加一些参数。所以我不知道如何构建它。

更新

假设我使用 json 作为该部分的如果用户希望默认绘制所有控件

,我应该如何将默认值放入方法签名中
{
"withSection1": 'true'
"withSection2": 'true'
"withSection3": 'false'
"withSection4": 'true'

}

所以方法签名将类似于drawScreen(jsonStr)

最佳答案

对象(如果您想使用简单的对象而不使用原型(prototype))和 JSON 之间的主要区别是您将无法使用 JSON 中的函数。

如果你不需要函数(从不),你当然应该选择 JSON,因为它的限制性更强,而且它几乎总是一件好事,可以防止用户做你不想要的事情。如果您打算这样做,这也可以帮助您将其与其他语言一起使用。

但是,我创建了一个 javascript/node.js 框架(如果您想查看示例,可以在我的个人资料中找到一个链接),我在其中广泛使用 javascript 对象进行配置,因为它确实更加模块化(您可以将一些代码分解为变量,将一些文件合并在一起而无需做大量工作,您在解释上赢得了一点性能,...)!哦,我忘记了一些重要的事情!您不能在 JSON 中使用注释。

这里有一些简单的例子(不要这样编码:):

对象

// foo.js
var foo = {
foo: 1
};
<小时/>
// bar.js
var bar = {
bar: function() { return 2; }
};
<小时/>
// merge.js
var obj = merge(foo, bar); // Implement merge function once.

JSON

foo.json(无注释)

{
"foo": 1
}
<小时/>

bar.json(无注释)

{
"bar": 'no functions'
}
<小时/>
// merge.js
// You have to get the JSON files, then parse them (JSON.parse in javascript), then merge them.

正如我所说,您可以通过我的个人资料中的链接查看对象的更重要用途。

更新

如果您想在 JSON 中设置默认值和/或哪个字段以及哪种类型的字段,您当然应该有另一个 JSON 或对象来描述您的结构。在该框架中,用户的输入是从合约文件中处理的,例如:

var jsonConfiguration = '{"withSection1": false}';

var contract = {
withSection1: {
type: 'boolean',
default: true
},
withSection2: {
type: 'boolean',
default: true
},
withSection3: {
type: 'boolean',
default: false
},
withSection4: {
type: 'boolean',
default: true
}
}

// Check types, add default values if needed, ...
var configuration = processConfiguration(jsonConfiguration, contract);

drawScreen(configuration);

function processConfiguration(jsonConfiguration, contract) {
var configuration = JSON.parse(jsonConfiguration),
processedConfiguration = {}
;

for (var key in contract) {
if (undefined === configuration[key]) {
processedConfiguration[key] = contract[key].default;
} else {
processedConfiguration[key] = configuration[key];
}
}

return processedConfiguration;
}

关于javascript - 定义参数Json或对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28519523/

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