1

Fabric.js のすべてのクラスを拡張して、シリアル化できるプロパティもいくつか追加したいと考えています。私はこのようにしていた:

  var stateProps = fabric.Object.prototype.stateProperties;
  stateProps.splice(0,0,"name", "id", "creator", "dateTimeCreated");
  fabric.Object.prototype.stateProperties = stateProps;

問題なくオブジェクトに対して機能しますが、継承されたすべてのクラスの「stateProperties」は残念ながらプロトタイプに対して「初期化」されることがあり、新しいプロパティは言及されていません。

継承されたクラスのプロトタイプが初期化される前にこれらの行を呼び出す方法はありますか?

4

1 に答える 1

1

継承された「クラス」が新しいプロパティを取得しない理由は、それらが宣言中に構築されるためです (Fabric が初期化されるとき)。その時点で、彼らは の元の値を使用していますfabric.Object.prototype.stateProperties

シリアライゼーション出力にプロパティを含めることが目的の場合は、追加の "propertiesToInclude" 引数を指定して toJSON/toObject をいつでも使用できることを忘れないでください。

object.toJSON([ 'foo', 'bar' ]);
于 2013-10-31T17:17:52.167 に答える