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); } });
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 :En ajoutant l'attribut
opt
对象直接传递给handleScaled
函数,您可以在函数作用域内保留对其属性的访问权限。确保传递给handleScaled
的opt
对象包含预期的action
.