オブジェクトキーは関数呼び出しの外に存在しますが、関数のスコープ内には存在しません
P粉133321839
P粉133321839 2023-09-12 13:57:28
0
1
501

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

リーリー

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

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

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

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

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

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

P粉133321839
P粉133321839

全員に返信(1)
P粉356361722

コードでは、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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート