ホームページ  >  に質問  >  本文

オブジェクトキーは関数呼び出しの外に存在しますが、関数のスコープ内には存在しません

私は Fabric.js を使用していて、ある時点で次のコードを使用しました:

リーリー

しかし、handleScaled 関数 opt.action は未定義です:

リーリー 関数呼び出し前の

console.log(opt.action) には「scale」が正しく表示されますが、handleScaled で同じものを呼び出すと、opt .log(opt .action) を実行すると、「スケール」が正しく表示されます。オペレーション は未定義です。

opt.action が呼び出された関数のスコープ内に存在しないように見えるのに、呼び出しの直前に存在するのはなぜですか?

正しく動作するコードは、操作が「スケール」の場合にのみ

handleScale を呼び出します: ああああ

P粉133321839P粉133321839373日前453

全員に返信(1)返信します

  • P粉356361722

    P粉3563617222023-09-13 00:36:00

    コードでは、handleScaled 関数を呼び出す前に opt.action をログに記録すると、action にアクセスしているため、「scale」が正しく表示されます。 canvas.on イベント ハンドラーのコールバック関数に渡される opt オブジェクトの code> 属性。 opt.actionhandleScaled 関数に記録すると、opt オブジェクトが に渡されるため、unknown として表示されます。 handleScaled 関数は、このオブジェクトの別のインスタンスです。これは、以前に記録された opt オブジェクトとは異なるため、action 属性を持ちません。

    handleScaled 関数で opt.action にアクセスできるようにするには、コードを次のように変更します。

    リーリー

    opt オブジェクトを handleScaled 関数に直接渡すことにより、関数スコープ内でそのプロパティへのアクセスを維持できます。 handleScaled に渡される opt オブジェクトに、予期される action プロパティが含まれていることを確認してください。

    返事
    0
  • キャンセル返事