Prototype DOM扩展___$()方法的改变

本文详细解析了 Prototype 框架中 $() 方法从旧版本到 1.5.x 版本的变化,重点介绍了 Element.extend 方法的引入及其如何使 DOM 操作更加面向对象、简洁且易于使用。此外,文章还讨论了这种改进对于 IDE 代码提示的提升。

 

从最新版本的Prototype里,我发现我用得最多的 $() 方法代码有了变化:

function $() { 
 var results = [], element; 
 for (var i = 0; i < arguments.length; i++) { 
  element = arguments[i]; 
  if (typeof element == ’string’) 
   element = document.getElementById(element); 
  results.push(Element.extend(element)); 
 } 
 return results.length < 2 ? results[0] : results; 
}

  对比一下从前的版本

function $() { 
 var elements = new Array(); for (var i = 0; i < arguments.length; i++) { 
  var element = arguments[i]; 
  if (typeof element == ’string’) 
   element = document.getElementById(element);  if (arguments.length == 1) 
   return element;  elements.push(element); 
 } return elements; 
} 

  区别主要是 

  只有一个 return 语句,程序看起来更清晰,避免了函数多出口可能带来的混乱。 

  最重要的,Element.extend(element) 方法的引入。 

  这个Element.extend 也是1.5.x 版本的改进,看看它的源码:

if (!window.Element) 
 var Element = new Object();Element.extend = function(element) { 
 if (!element) return; if (!element._extended && element.tagName && element != window) { 
  var methods = Element.Methods; 
  for (property in methods) { 
   var value = methods[property]; 
   if (typeof value == ’function’) 
    element[property] = value.bind(null, element); 
  } 
 } element._extended = true; 
 return element; 
}Element.Methods = { 
 visible: function(element) { 
  return $(element).style.display != ’none’; 
 }, 
 //other method toggle/show/hide/remove/getHeight...... etc. 
}
 

  Element.Methods 就是原来从前版本定义的 Element 对象的静态方法,这些方法都需要传递一个DOM对象id或者DOM对象作为参数,比如如上代码中的 visible 方法需要传递一个element参数。而Element.extend(element)语句将这些方法都设置给了参数对象,同时又利用 bind 方法让参数对象调用这些方法的时候,巧妙的传递自身作为参数。 

  也许没说明白,还是用代码说明吧!从Prototype1.5.x版本开始,你可以更方便的如下面代码一样操作DOM对象了: 

var ele = $("myelement"); 
ele.hide(); //隐藏DOM对象对比从前的版本var ele = $("myelement"); 
Element.hide(ele); //隐藏DOM对象 

  这样的改变有什么益处呢? 我觉得一来是更面向对象了,二来就是便于将来IDE里的代码提示

这个是完整源码 python实现 Django 【python毕业设计】基于Python的天气预报(天气预测分析)(Django+sklearn机器学习+selenium爬虫)可视化系统.zip 源码+论文+sql脚本 完整版 数据库是mysql 本研究旨在开发一个基于Python的天气预报可视化系统,该系统结合了Django框架、sklearn机器学习库和Selenium爬虫技术,实现对天气数据的收集、分析和可视化。首先,我们使用Selenium爬虫技术从多个天气数据网站实时抓取气象数据,包括温度、湿度、气压、风速等多项指标。这些数据经过清洗和预处理后本研究旨在开发一个基于Python的天气预报可视化系统,该系统结合了Django框架、sklearn机器学习库和Selenium爬虫技术,实现对天气数据的收集、分析和可视化。首先,我们使用Selenium爬虫技术从多个天气数据网站实时抓取气象数据,包括温度、湿度、气压、风速等多项指标。这些数据经过清洗和预处理后,将其存储在后端数据库中,以供后续分析。 其次,采用s,将其存储在后端数据库中,以供后续分析。 其次,采用sklearn机器学习库构建预测模型,通过时间序列分析和回归方法,对未来天气情况进行预测。我们利用以往的数据训练模型,以提高预测的准确性。通过交叉验证和超参数优化等技术手段,我们优化了模型性能,确保其在实际应用中的有效性和可靠性。 最后,基于Django框架开发前端展示系统,实现天气预报的可视化。用户可以通过友好的界面查询实时天气信息和未来几天内的天气预测。系统还提供多种图表类型,包括折线图和柱状图,帮助用户直观理解天气变化趋势。 本研究的成果为天气预报领域提供了一种新的技术解决方案,不仅增强了数据获取和处理的效率,还提升了用户体验。未来,该系统能够扩展至其他气象相关的应用场景,为大众提供更准确和及时的气象服务。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值