把原本放在html属性里的onmousedown ... 等放进Tagger构造函数里.(因为HTML事件处理有很多缺陷, 至少会让代码很臃肿) 于是做了如下修改
但是没能成功. 关键是这一句
这个问题困扰了我几天, 现在发现有如下两点问题:
首先函数名仅仅是指向函数的指针. 我们的本意是把鼠标按下这个函数传递给tag事件, 但我写的这句话的执行过程是: 先调用mouseDown(event), 之后返回值, 最后把值返回给this.tag.onmousedown . 所以我们应该用function(event){} 把后面那句话包裹起来. 我参考了将函数赋值给一个对象的属性或方法的一个小问题.
但还是没有成功!
首先我们得知道this指代的是什么?
javascript高级程序设计里讲
在全局函数中, this等于window, 而当函数被作为某个对象的方法调用时, this等于那个对象.
按文档里说
"The caller provides the this value. If the this value provided by the caller is not an object (including the case where it is null), then the this value is the global object."
也就是说这里后一个this指代的是tag对象. 那么我们怎么处理呢? 可以用一个变量保存Tagger的this对象
当然了, 好看点可以这样