Rumah > Soal Jawab > teks badan
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); } });
P粉3563617222023-09-13 00:36:00
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:
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 }
Dengan menambah atribut opt
对象直接传递给 handleScaled
函数,您可以在函数作用域内保留对其属性的访问权限。确保传递给 handleScaled
的 opt
对象包含预期的 action
.