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

JavaScript类型判断

在JavaScript中,变量中可以存储的值主要有两种类型:原始值(primitive value)和引用值(reference value)。前者通常是固定而又简单的数据,存储在栈(stack)中,而后者则是比较大的对象,存储在堆(heap)中,而对于后者的调用,是通过存储在栈中的指针来完成的。原始类型有五种:Number、String、Boolean、Null和Undefined,引用类型都继承自Object。
我们的最终目标就是一个叫做tof的全局函数,返回值为字符串,代表anything对应的类型,因为所有的引用类型都是object,所以这里返回的类型应该不局限于数据类型,应该尽可能的反映出anything的真实信息:
var t = tof(anything);
第一个实现肯定是利用传统的typeof来实现:
function tof(val) {return typeof(val);}
typeof可以得出的结论有五种:undefined、string、number、boolean和object。和原始类型比较还差个null,这个比较特殊,typeof(null)的返回值是object,这本来是JavaScript早期的bug,但后来却被写入了ECMAScript标准,可以理解为null是object的占位符。很明显,typeof无法满足我们的需求。
幸好Google的Mark Miller找到另外一个非常有效的判断数据类型的方法,就是利用Object.prototype.toString.call,用这个方法对Date类型数据进行计算,得到的结果是“[object Date]”,对于其他类型,前半部分始终是object,后半部分会发生变化,这样就很方便我们判断了。jQuery从1.3开始,也采用了这种方法判断array和function。下面我们来改进一下:
function tof(val) {
return Object.prototype.toString.call(val).match(/objects(w+)/)[1];
}
这个函数现在已经可以判断非常多的情况了,等等,undefined和null怎么返回的是Window(Firefox 3.0.6和Opera 9.63),在IE 7下返回Object,在Chrome返回builtins,在Safari 3.2下返回DOMWindow,明显优于这两个被定义为全局对象的属性,在不同的浏览器下挂到了不同的全局对象上。既然这么特殊,只能对他们单独有待一下了:
function tof(val) {
    var t;
    switch(val) {
    case null:
        t = "null";
    break;
    case undefined:
        t = "undefined";
    break;
    default:
   


相关文档:

Javascript Closures

Javascript Closures
Introduction
The Resolution of Property Names on Objects
Assignment of Values
Reading of Values
Identifier Resolution, Execution Contexts and Scope Chains
The Execution Context
Scope chains and [[scope]]
Identifier Resolution
Closures
Automatic Garbage Collecti ......

[JAVASCRIPT] this 对象

看了很多javascrip代码,发现很多地方用到了this这个对象,那这个到底是什么东西阿?
先让我们来理解一个概念:
在javascript会有一个上下文的概念,任何一个对象无论是Object 还是function 都会有一个专有的上下文对象,也可以理解为它自己的拥有者。
那么我们很容易想到这个拥有者,必然有个终点,那就是window对象。 ......

javascript中的null和undefined

javascript中的null和undefined
本文装载网络,版权归原作者所有。
null :表示无值;
undefined : 表示一个未声明的变量,
                或已声明但没有赋值的变量,
          &nb ......

Javascript 密码强度设置 脚本

/**
 * 6 级强度设置(数字、大写字母、小写字母、特殊字符、长度>=6、长度>=10)
 * 如果密码为空,返回 0
 */
function __pwdStrength(pwd) {
    var sum = [0, 0, 0, 0];
    for (var i=0; i<pwd.length; i++) {
      & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号