ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 未捕获的TypeError:无法读取未定义的属性’hasOwnProperty’

2019-08-25 04:36:54  阅读:361  来源: 互联网

标签:javascript javascript-events anonymous-function


我正在使用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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有