javascript中诡异的this
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:editor 阅读 224
把原本放在html属性里的onmousedown...等放进Tagger构造函数里.(因为HTML事件处理有很多缺陷,至少会让代码很臃肿)于是做了如下修改functionTagger(id1,id2

把原本放在html属性里的onmousedown ... 等放进Tagger构造函数里.(因为HTML事件处理有很多缺陷, 至少会让代码很臃肿) 于是做了如下修改

  

但是没能成功. 关键是这一句

  

这个问题困扰了我几天, 现在发现有如下两点问题:

  • 1 函数赋值问题

首先函数名仅仅是指向函数的指针. 我们的本意是把鼠标按下这个函数传递给tag事件, 但我写的这句话的执行过程是: 先调用mouseDown(event), 之后返回值, 最后把返回给this.tag.onmousedown . 所以我们应该用function(event){} 把后面那句话包裹起来. 我参考了将函数赋值给一个对象的属性或方法的一个小问题.

  

  但还是没有成功!

  • 2 this关键字

首先我们得知道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对象

  
当然了, 好看点可以这样
  

 

 

 

 

 

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2