惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
F
Fortinet All Blogs
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
罗磊的独立博客
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
U
Unit 42
N
Netflix TechBlog - Medium
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
Stack Overflow Blog
Stack Overflow Blog
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
G
Google Developers Blog
H
Help Net Security

博客园 - 非我

目前主流的四大浏览器内核Trident、Gecko、WebKit以及Presto 随手记录: MVC自定义提交form 在文本框的光标处插入指定的文本(另一种方式) 在文本框的光标处插入指定的文本(兼容IE6和Firefox) javascript对象的深拷贝 对mootools的颜色选择器做个小改进 用户中心 - 博客园 检查矩阵是否有线性相关性 - 非我 - 博客园 WOW笑话,笑死我了 动态修改/添加CSS文件链接 使用.net验证控件遇到的小麻烦 (转)40种网站设置技巧 访问者模式-Visitor 学习与思考 对Response.End的疑问 累啊~用记事本写的小程序 Observer pattern 观察者模式 艾薇尔新歌GrilFriend的MV Command Pattern - 命令模式(ASP.NET版) 动态控件的问题
Javascript对象的比较
非我 · 2008-05-20 · via 博客园 - 非我

这个随笔其实是为了感谢清风笑给的一个提示,不仅仅是告诉我怎么判断数组,更让我有了认真读一读 《javascript权威指南》的想法

比较和拷贝其实是一回事,代码如下:

//
//Compare object function
//
function Compare(fobj,sobj)
{
    var ftype 
= typeof(fobj);
    var stype 
= typeof(sobj);
    
    
if (ftype == stype)
    
{
        
if (ftype == "object"
        
{
            
if (fobj.constructor == Array && sobj.constructor == Array)//array
            {
                
return CompareArray(fobj,sobj)
            }

            
else if (fobj.constructor != Array && sobj.constructor != Array)//object
            {
                
return CompareObject(fobj,sobj);
            }

            
return false;
        }

        
        
return fobj == sobj;
    }

    
    
return false;
}


function CompareObject(fobj,sobj)
{
    
for (var ele in fobj)
    
{
        
if (sobj[ele] == undefined) return false;
        
        
if (!Compare(fobj[ele],sobj[ele]))
        
{
            
return false;
        }

    }

    
    
return true;
}


function CompareArray(farr,sarr)
{
    
if (farr.length != sarr.length)
    
{
        
return false;
    }

    
    
for (var i = 0; i < farr.length; i++)
    
{
        
if (!Compare(farr[i],sarr[i]))
        
{
            
return false;
        }

    }

    
    
return true;
}