Saya menggunakan fabric.js dan pada satu ketika saya menggunakan kod berikut:
canvas.on("object:modified", (opt) => { console.log(opt.action); //="scale" handleScaled(opt); });
tetapi dalam handleScaled
函数中opt.action
undefined:
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”。操作
Tidak ditentukan.
Mengapa opt.action
nampaknya tidak wujud dalam skop fungsi yang dipanggil, tetapi wujud sejurus sebelum panggilan?
Kod kerja yang betul hanya dipanggil apabila operasi "skala" handleScale
:
canvas.on("object:modified", (opt) => { if (opt.action === "scale") { handleScaled(opt); } });
Dalam kod anda, apabila anda memanggil
handleScaled
函数之前记录opt.action
时,它会正确显示“scale”,因为它正在访问action
传递给canvas.on
事件处理程序的回调函数中opt
对象的 code> 属性。当您在handleScaled
函数中记录opt.action
时,它显示为undefined
,因为opt
对象被传递给handleScaled
函数是该对象的另一个实例。它没有action
属性,因为它与之前记录的opt
objeknya berbeza.Untuk menjadikan
opt.action
可以在handleScaled
boleh diakses dalam fungsi, anda boleh mengubah suai kod seperti ini:Dengan menambah atribut
opt
对象直接传递给handleScaled
函数,您可以在函数作用域内保留对其属性的访问权限。确保传递给handleScaled
的opt
对象包含预期的action
.