搜索
查看: 1431|回复: 2

com对象是如何判断相等的

[复制链接]

15

主题

66

帖子

390

积分

二级会员

Rank: 3Rank: 3

积分
390
发表于 2017-10-28 21:38:14 | 显示全部楼层 |阅读模式
  1. import console;
  2. import com;
  3. import com.excel;
  4. var com1 = com.GetObject("Excel.Application");
  5. var e1 = com.excel(false);
  6. var e2 = com.excel(false);
  7. var com2 = com.GetObject("Excel.Application");


  8. console.print("com1:");
  9. console.varDump(com1.ActiveWorkbook );
  10. console.print("com2:");
  11. console.varDump(com2.ActiveWorkbook );
  12. console.log("com1==com2 ?  ", com1.ActiveWorkbook == com2.ActiveWorkbook);
  13. console.log("e1==e2 ?  ", e1==e2);
  14. console.pause(true);
复制代码


运行结果如下:
参数位置:1
数据类型:table
变量值: {
    __thisPointer = cdata: 028D5370
}


com2:
参数位置:1
数据类型:table
变量值: {
    __thisPointer = cdata: 028D58E8
}


com1==com2 ?    true
e1==e2 ?        false


从运行结果来看,com返回的对象是包含指针的表,每次获取的对象表内指针也不同,但在判断是否两个对象是否相等的时候却能判断是同一个对象(实际是同一个对象),那么是通过什么参数来判断相等的呢?请指教,谢谢!
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2017-10-28 23:01:37 | 显示全部楼层
不同的指针只是说明指向不同的内存,不同的内存里可以放相同的对象。
表对象也一样,不同的表对象里面可以放相同的其他对象。

不同的对象返回相等的结果,这个可以通过重载等式操作符实现,
参考帮助文档操作符部分的说明
回复

使用道具 举报

15

主题

66

帖子

390

积分

二级会员

Rank: 3Rank: 3

积分
390
 楼主| 发表于 2017-10-29 21:35:46 | 显示全部楼层
Jacen.He :

     感谢你的回复,我是想有没有方法可以得到两个不同指针指向的那个相同的对象。或者是那个对象独有的特征信息。这样我可以利用它来保存并识别注册过的事件表。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-12 04:53 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表