Maison > Questions et réponses > le corps du texte
J'utilise fabric.js et à un moment donné j'ai utilisé le code suivant :
canvas.on("object:modified", (opt) => { console.log(opt.action); //="scale" handleScaled(opt); });
mais en handleScaled
函数中opt.action
undéfini :
function handleScaled(opt) { console.log(opt.action) //=undefined console.log(opt) //displays the whole opt object but there is no "action" in it //further handleScaled code }
console.log(opt.action)
在函数调用之前会正确显示“scale”,但是当我在 handleScaled
中调用相同的内容时,opt.log(opt.action) 会正确显示“scale”。操作
Indéfini.
Pourquoi opt.action
ne semble-t-il pas exister dans le cadre de la fonction appelée, mais existe juste avant l'appel ?
Le code de fonctionnement correct n'est appelé que lorsque l'opération est "à l'échelle" handleScale
:
canvas.on("object:modified", (opt) => { if (opt.action === "scale") { handleScaled(opt); } });
P粉3563617222023-09-13 00:36:00
Dans votre code, lorsque vous appelez handleScaled
函数之前记录 opt.action
时,它会正确显示“scale”,因为它正在访问 action
传递给 canvas.on
事件处理程序的回调函数中 opt
对象的 code> 属性。当您在 handleScaled
函数中记录 opt.action
时,它显示为 undefined
,因为 opt
对象被传递给handleScaled
函数是该对象的另一个实例。它没有 action
属性,因为它与之前记录的 opt
l'objet est différent.
Pour rendre opt.action
可以在 handleScaled
accessible dans une fonction, vous pouvez modifier le code comme ceci :
canvas.on("object:modified", (opt) => { console.log(opt.action); //="scale" handleScaled(opt); }); function handleScaled(opt) { console.log(opt.action); // "scale" (should display correctly) // further handleScaled code }
En ajoutant l'attribut opt
对象直接传递给 handleScaled
函数,您可以在函数作用域内保留对其属性的访问权限。确保传递给 handleScaled
的 opt
对象包含预期的 action
.