オブジェクト コンストラクターである childType プロパティを持つ JavaScript オブジェクトがあり、汎用の addChild メソッドを記述したいとします。this.childType のインスタンスを作成し、そのコンストラクターを呼び出して、渡された引数を addChild に渡す必要があります。
明確にするために、ポイントは、渡された子オブジェクトの型を検証するのではなく、継承された汎用 addChild メソッドとその既知の childType を使用して、各コレクションが子オブジェクト自体を作成することです。
これが難しいとは思っていませんでしたが、いろいろ試してみましたが、今のところ失敗しかありません。
アップデート:
これまでに知っている最善の解決策でデモ プランクを更新し、コードに問題に関するコメントをいくつか含めました。以下で説明する失敗した試行はなくなりました。このソリューションでは、可能性のあるすべての chhold オブジェクトに「新しい不可知論的コンストラクター」が必要になるため、まだ理想的ではありません。さらなる考えは大歓迎です。
次の 2 つの理由から、この行が間違っていることはわかっています。
var child = new this.childItemType.call(args);
まず、ある種の「this」を呼び出し関数に渡す必要があると思いますが、そこに何があるかわかりません。
2 番目はおそらく最初の結果であり、ブラウザで報告されたエラーです。
Uncaught TypeError: function call() { [native code] } is not a constructor
これは実行可能だと思いますが、 this.childType と渡された引数からその子オブジェクトを作成するための構文は、これまでのところ私を逃れています。誰かがここに欠けている脳細胞を指摘できますか?