javascript – 未捕获的TypeError:无法读取未定义的属性’hasOwnProperty’
作者:互联网
我正在使用fabric.js在画布上绘制一些文本.我有一个创建文本标签的功能.我想让标签在选中时运行一个功能.其语法是label.on(‘selected’,functionToCall());当我将函数设置为匿名内部函数时,这很好用,但是当我将它作为一个单独的函数分解时,我得到一个未捕获的TypeError:无法读取未定义的属性’hasOwnProperty’.我究竟做错了什么?
以下代码对我不起作用.这是jsfiddle上的broken code,以及设置了anonymous function的版本.
"use strict";
var canvas = new fabric.Canvas('c', {selection: false}),
position = 50;
function onLabelSelection(theLabel) {
if (theLabel.hasOwnProperty('edge')) {
selectedEdge = theLabel.edge;
} else {
selectedEdge = null;
}
}
function createLabel() {
var label;
label = new fabric.Text('Hello World', {
left: position,
top: position
});
position += 50;
label.edge = null;
label.on('selected', onLabelSelection(this));
return label;
}
canvas.on('mouse:up', function() {
var newLabel = createLabel();
canvas.add(newLabel);
});
解决方法:
The syntax for this is
label.on('selected', functionToCall())
否.事件处理程序的语法是传递处理函数,而不是调用它:
label.on('selected', functionToCall);
你可能想尝试label.on(‘selected’,onLabelSelection.bind(this))或 – 因为这里面的createLablel显然是未定义的 – 只是label.on(‘selected’,onLabelSelection).
标签:javascript,javascript-events,anonymous-function 来源: https://codeday.me/bug/20190825/1715457.html