私は動的に複数のJavaScriptファイルを結合したい、などのいくつかの機能を持つオブジェクトとして表される各:私はJSONオブジェクトに似ている1つのファイルを返したい組み合わせるJSファイル(JSONish)
// ./src/foo.js
{
"foo": function() {
console.log("foo");
}
}
// ./src/bar.js
{
"bar": function() {
console.log("bar");
}
}
// desired output
{
"foo": function() {
console.log("foo");
},
"bar": function() {
console.log("bar");
}
}
。私は厳格なJSONを組み合わせた場合、この関数は次のように(非常に大まか)になります。
var files = ['./src/foo.json', './src/bar.json'];
var final = {};
for(var i in files) {
var srcFile = files[i];
var json = JSON.parse(fs.readFileSync(srcFile, 'utf8'));
Object.assign(final, json);
}
console.log(JSON.stringify(final, null, 2));
私のファイルは厳密にはJSON表現で許可されていない機能やコメントを、含まれているので、これは、しかし、動作するようには思えません。したがって、ファイルを.jsファイルとして保存する必要があり、この方法はオブジェクトを単一のオブジェクトにマージするためには機能しません。関数を含む "JSON"ファイルを読み込んでマージするにはどうすればいいですか?変数に関数を含むjavascriptオブジェクトを読み取るためにvar json = JSON.parse(fs.readFileSync(srcFile, 'utf8'));
を置き換える何
- :
だから私の質問は2部に沸きますか?
Object.assign({}, json)
を機能的オブジェクトをマージする代わりには何ですか?ここ
技術的にはjsonに関数を入れられません。しかし、あなたはそれの文字列表現を内部に入れることができます – kharandziuk