下記オブジェクトリテラルを外部ファイルに記載して
必要個数分だけ、ループして各々別々のDBデータを
入れたいのですが、オブジェクトリテラルは参照型
なので1箇所値を変更するとfor文の全ての値も変わって
しまいます。
【外部オブジェクトリテラル Z.jsを定義】
module.exports = {
A : {
B : {
id : '',
key : '',
val : '',
img : '',
},
C : {
id : '',
key : '',
val : '',
img : '',
},
},・・・上記のようなオブジェクトリテラルを繰り返しnewしてオブジェクトを生成すればよいという話で完結しそう
ですが、new require ('./Z.js')では「Object is not Ffunction」と怒られてしまいますし、上記外部オブジェクトリテラルを以下のような関数型で定義すると子・孫function以下に記載した変数がなぜか読み取られません。
【関数内に変数を持たせる内容に修正した外部変数 Y.js】
module.exports = function () {
this.A = function A () {
this.B = function() {
var id若しくはthis.id = '';
var key若しくはthis.key = '';
var val若しくはthis.val = '';
var img若しくはthis.img = '';
},
this.C = function() {
var id若しくはthis.id = '';
var key若しくはthis.key = '';
var val若しくはthis.val = '';
var img若しくはthis.img = '';
};
};
}
var H = [];
for ・・・ {
H.push (new require ('./Y.js') )
}ですと参照型でなく個別の外部変数が入りますがthis.A内のid, key, val, imgなどundefinedと定義されていないと怒られてしまいます。
上記に関して、Z.jsのオブジェクトリテラルを必要な個数分、別途コピペでZ0.js, Z1,js, Z2.js・・・と作成して
for文を回して外部ファイルを読み取りまくれば参照型であっても独立した(競合しない)オブジェクトリテラルとして
扱うことが叶い一応目的は達成できますが、オブジェクトリテラルの構造を変更しようとしたときのメンテナンスが面倒なので
Y.jsのようなnewで生成する実装を実現したいと思っています。
上記解決策がお分かりでしたらご教示をお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/09 12:15
2015/12/09 13:04