1
オブジェクトを関数に配置し、元の値を持つ オブジェクトを返す方法を理解しようとしています。オブジェクトはその状態を保持する必要があります
それは私の "フレームワーク" からの一部です...簡略化した例ここで
:var _objectToFunction = function (obj) {
var F = function() { }
F.prototype = obj
return F
}
var myclass = {
a:"abc",
print: function(){
console.log("i am a func")
},
config: {
path: "c:/bla"
}
}
var fo = _objectToFunction(myclass)
var of = new fo()
of.config.path = "c:/ofpath"
of.z = "zzz"
of.a ="aaa"
console.log(of)
var fo2 = _objectToFunction(myclass)
var of2 = new fo2()
console.log(of2.z)
console.log(of2.a)
console.log(of2.config.path)
にconsole.log(of2.config.path)から出力すべき "C:/ BLA"しかし、 "c:/ ofpath"です。
どうすればこのようにすることができますか?
すべての 'config'をプロパティは、同じオブジェクトへの参照です。異なるインスタンスに対して異なる 'config'オブジェクトを使いたい場合は、それを複製する必要があります。 – PeterMader
あなたの答えに感謝します。 Object.assign({}、obj)でクローンを作成しようとしましたが、同じ結果が出ません。 – pumi
@pumiそれはあなたがまだ(今クローンされている)myclass.configをオーバーライドしているので、それぞれのインスタンスに対してこれを行う必要があります。 –