WEB开发网
开发学院网页设计JavaScript 关于prototype.js的一些技术说明 阅读

关于prototype.js的一些技术说明

 2010-09-14 13:11:41 来源:WEB开发网   
核心提示: 我从来没读过prototype.js的扩展项目代码,也不知道bind..的最佳实践,关于prototype.js的一些技术说明(4),一起挖掘吧,但你绝对不要把bind/bindAsEventListener从绑定的词义上来理解,会响应鼠标键盘的事件,如果你用了以下代码,可能会让你更加迷惑

我从来没读过prototype.js的扩展项目代码,也不知道bind..的最佳实践,一起挖掘吧。但你绝对不要把bind/bindAsEventListener从绑定的词义上来理解,可能会让你更加迷惑。从apply/call理解本质。应用某一对象的一个方法,用另一个对象替换当前对象。

关于事件监听最佳实践

很显然prototype.js提供的事件注册方法不是很完善。那看看dojo的时间注册吧(中文版),更加复杂,估计很多人像我一样,对于dojo暂时持观望态度。

如果你看过的前篇关于闭包的介绍,可能见过以下代码。

看以下代码前我想表述一个观点,任何网页中元素,浏览器都会为你创建一个对象(见)。(我觉得)这些对象与你建立javascript对象区别是它们有事件监听,会响应鼠标键盘的事件。如果你用了以下代码,那么把事件监听代码很好的转化到你的javascript代码中。

function associateObjWithEvent(obj, methodName){
  return (function(e){
    e = e||window.event;
    return obj[methodName](e, this);
  });
}
  
function DhtmlObject(elementId){
  var el = getElementWithId(elementId);
  if(el){
    el.onclick = associateObjWithEvent(this, "doOnClick");
    el.onmouseover = associateObjWithEvent(this, "doMouseOver");
    el.onmouseout = associateObjWithEvent(this, "doMouseOut");
  }
}
  
DhtmlObject.prototype.doOnClick = function(event, element){
  ... // doOnClick method body.
}
DhtmlObject.prototype.doMouseOver = function(event, element){
  ... // doMouseOver method body.
}
DhtmlObject.prototype.doMouseOut = function(event, element){
  ... // doMouseOut method body.
}

有时间我想用以上思想实现一个网页浮动框拖拉的代码(其实已经有很多了)

上一页  1 2 3 4 

Tags:关于 prototype js

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接