{console.log(opt.action);//="scale"handleScaled ( opt);});しかし、handleScaled 関数では opt.action が定義されていません: functionhandleScaled(op)">
私は Fabric.js を使用していて、ある時点で次のコードを使用しました:
リーリーしかし、handleScaled関数opt.actionは未定義です:
console.log(opt.action)には「scale」が正しく表示されますが、handleScaledで同じものを呼び出すと、opt .log(opt .action) を実行すると、「スケール」が正しく表示されます。オペレーションは未定義です。
opt.actionが呼び出された関数のスコープ内に存在しないように見えるのに、呼び出しの直前に存在するのはなぜですか?
handleScaleを呼び出します:ああああ
コードでは、
handleScaled関数を呼び出す前にopt.actionをログに記録すると、actionにアクセスしているため、「scale」が正しく表示されます。canvas.onイベント ハンドラーのコールバック関数に渡されるoptオブジェクトの code> 属性。opt.actionをhandleScaled関数に記録すると、optオブジェクトがに渡されるため、unknownとして表示されます。 handleScaled関数は、このオブジェクトの別のインスタンスです。これは、以前に記録されたoptオブジェクトとは異なるため、action属性を持ちません。
リーリーhandleScaled関数でopt.actionにアクセスできるようにするには、コードを次のように変更します。optオブジェクトをhandleScaled関数に直接渡すことにより、関数スコープ内でそのプロパティへのアクセスを維持できます。handleScaledに渡されるoptオブジェクトに、予期されるactionプロパティが含まれていることを確認してください。