私は Fabric.js を使用していて、ある時点で次のコードを使用しました:
リーリーしかし、handleScaled
関数 opt.action
は未定義です:
console.log(opt.action)
には「scale」が正しく表示されますが、handleScaled
で同じものを呼び出すと、opt .log(opt .action) を実行すると、「スケール」が正しく表示されます。オペレーション
は未定義です。
opt.action が呼び出された関数のスコープ内に存在しないように見えるのに、呼び出しの直前に存在するのはなぜですか?
handleScale を呼び出します:
ああああ
P粉3563617222023-09-13 00:36:00
コードでは、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
プロパティが含まれていることを確認してください。