易截截图软件、单文件、免安装、纯绿色、仅160KB

Javascript函数类型判断完美解决方案


Javascript函数类型判断完美解决方案
在判断函数类型时,我们通常使用typeof方法,一般情况下,它会得到我们所预想的效果。但是,有一些细节并不为我们所熟知。John Resig 在分析了这些细节之后,为我们提供了一个完美的解决方案,本文将作详细介绍:
一、传统方法不为人所知的细节
毫无疑问,在判断函数类型时,我们使用的是typeof方法,比如:
function fn(){
//content
}
alert(typeof fn)//结果是"function"。
但是,该方法在一些浏览器中并不是像我们想像的那样工作。
1、Firefox2和Firefox3
在这两个浏览器中,用typeof检测HTML对象元素的类型,得到是一个不精确的“function”结果,而不是“object”,如HTMLDocument。如:
alert(typeof HTMLDocument);
//在Firefox2中结果是"function";
//在Firefox3中结果是"object";
2、Firefox2
对于正则表达式,在该浏览器中返回的结果是“function”(在Firefox3中结果是“object”),如:
var reg = /test/;
alert(typeof reg);
//在Firefox2中结果是"function";
//在Firefox3中结果是"object";
注:本人在safari中测试,其结果也是“function”。
3、IE6和IE7
在IE中对DOM元素使用typeof方法,得到的结果是“object”。如:
alert(typeof document.getElementsByTagName("body")[0].getAttribute);
//结果是"object"
4、Safari 3
safari认为DOM元素的NodeList是一个函数,如:
alert(typeof document.body.childNodes);
//结果是"function"
很明显,如果你要测试一个对象是否为函数,使用typeof方法并不能从真正意义上保证测试结果。那么,我们就需要一种在所有浏览器中都能保证测试
结果的解决方案。我们知道function本身有apply()和call()两种方法,但这两个方法在IE中存在问题的函数中并不存在,试试下面的测
试:
alert(typeof document.getElementsByTagName("body")[0].getAttribute.call)
//在IE中结果是"undefined"
显然,我们不能利用这两个方法。
二、完美解决方案及实现过程
John Resig为我们提供了一个完美的解决方案,这个复杂但很稳定的判断一个对象是否为函数的方法如下:
function isFunction( fn ) {
return !!fn && !fn.nodeName && fn.constructo


相关文档:

Javascript时间差计算函数

JavaScript时间差计算函数
<mce:script language="javascript"><!--
Date.prototype.dateDiff = function(interval,objDate){
//若參數不足或 objDate 不是日期物件則回傳 undefined
if(arguments.length<2||objDate.constructor!=Date) return undefined;
......

ie的javascript语句失效修复方法

2007-01-20 01:01
ie的javascript失效了,不是设置的问题
折腾了一晚上终于在水木上找到答案了,经过试验成功了。感谢这位haning。也希望转载之后,这篇文章能帮助更多的人。
================================================
发信人: haning (柏寒宇), 信区: Virus
标  题: KAV6.0使javascript语句失效修复方法 ......

Javascript 设置textarea输入框的最大值

<html>
  <head>
  <title>测试输入字符</title>
  <script language=javascript>  
  String.prototype.lenB =function(){
    return this.replace(/[^\x00-\xff]/g,"**").length;
  }  
  function  a() ......

Javascript 语法讲解

1.delete 运算符
对象删除一个属性,或数组中删除一个元素。将无用的内容删除以节省空间。
delete expression
example:
  var person = new Object();
  person.sex = "male";
  alert(person.sex);
  delete person.sex;
  alert(person.sex);
2. ‘,' 运算符
  var a = 2; ......

添加收藏夹,只运行一次的javascript代码


function get_cookie(Name)
{
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0)
{
    var offset = document.cookie.indexOf(search)
    if (offset != -1)
    {
    &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号