+ -
当前位置:首页 → 问答吧 → 如何比较函数/对象是否相等

如何比较函数/对象是否相等

时间:2011-09-16

来源:互联网

<!DOCTYPE html>
<html>
<head><title>JS 测试函数</title>
</head>
<body>
<script>
function func(){};
obj1=new func();
obj2=new func(); 
alert(obj1==obj2);
</script>
</body>
</html>
为什么显示是false呢?

作者: shijuren   发布时间: 2011-09-16

比较对象和函数是否相等用 ===

作者: danica7773   发布时间: 2011-09-17

new func();
创建的对象有不同的引用,当然不相等。

作者: Acesidonu   发布时间: 2011-09-17

那是两个不同的对象

作者: Sencha_Android   发布时间: 2011-09-17

没有深入了解过ECMA规范,俺猜测一下。
1:new func()在内存开辟空间创建对象并返回该对象的内存地址。
2:obj1和obj2像指针一样的变量,里面的值是1中创建对象的内存地址
3:直接用==比较的时候比较的时候是比较obj1和obj2变量里的值。
如果你想看这两个对象是否是通一个构造函数(也就是你上面的func函数)创建的。
应该使用
JScript code
obj1.constructor==obj2.constructor

实际使用中,这个那个func里面应该有属性。根据业务属性来判断是否相等。

作者: hackerster   发布时间: 2011-09-17

对象比的是引用

作者: aspwebchh   发布时间: 2011-09-17

obj1=new func();
obj2=new func(); 

每次new的时候 会分配一块内存 其地址永远是不会一样的 虽然是同一个对象

作者: fanchuanzhidu   发布时间: 2011-09-17