js 判断对象是否是同一个对象 10

就是c++的&a==&bstrings1="ab",s2="ab",&s3=s2;if(s1==s2)//trueif(&s1==&s2)//false要实现这个if(&... 就是c++的 &a == &b

string s1="ab",s2="ab",&s3=s2;
if(s1==s2) // true
if(&s1==&s2) // false 要实现这个
if(&s2==&s3) // true

javascript:
var a="ab",b="abc".substr(0,2) ,c=b;
if(a==b) //true
if(a===b)//true
if(b==c) // true
if(b===c)//true
可以看到根本无法判断是
var a=new String(xxx), b=a
还是
var a=new String(xxx),b=new String(a);
请教如何判断?
展开
 我来答
tw孤声边界
2015-12-16 · TA获得超过508个赞
知道小有建树答主
回答量:418
采纳率:0%
帮助的人:184万
展开全部
你的意思是判断两个对象是否是同一个对象,在js里,字符串不是对象类型(当然js里从宏观上说神马一切都是对象),基本数据类型存在栈内存里,存的是他们的值不是存的地址,在基本数据类型里值相等并且数据类型相同他们就完全相等(除开奇怪的NAN)。所以s1==s2为true,a===b也为true,b==c还是为true,b===c也为true。
他们本身就是全等的,var a="ab",b="abc".substr(0,2) ,c=b;因为存的东西都是一样都是他们的值。你可以把String换成Array或者Obj就跟你想要的效果一样了。
Andy_Sun321
推荐于2017-06-13 · TA获得超过1376个赞
知道小有建树答主
回答量:811
采纳率:89%
帮助的人:707万
展开全部
从举例来看,是将string当做全部对象了。
在JavsScript中,没有类似c, c++中的所谓取地址的操作,给String变量赋值,就是值复制。所有的String变量都是有自己的存储空间的;而String变量的比较就是比较其内容是否相同,而不是比较是否为同一存储空间的变量。
如果是页面元素对象或者其他自定义“类”实例的话,那么等号操作符则是比较元素对象是否为同一实例。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hwguan
2015-01-13 · TA获得超过1万个赞
知道大有可为答主
回答量:4405
采纳率:0%
帮助的人:4113万
展开全部
相同的值在内存里的地址是一个
js里面的变量就相当于引用,指向这些值
=== 附加了类型比较,而不是判断是否引用
追问
没错,那么怎么实现 if(&a == &b) 呢?

有没有什么全局唯一对象id以供判断?
难得必须自己像这样写吗...
function newString(x)
{
s=new String(x);
s.globalid=Math.random();
return s;
}
function equalObj(x,y)
{
return x.globalid==y.globalid;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SlayerS_Cz
2015-01-14
知道答主
回答量:8
采纳率:0%
帮助的人:5.1万
展开全部
<script type="text/javascript">
var s1="ab",s2=s1;
s1="bc";
alert(s2); //ab
</script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灰常了dei
2015-01-16 · TA获得超过1736个赞
知道小有建树答主
回答量:596
采纳率:60%
帮助的人:615万
展开全部
一个脚本语言而已,不至于到内存吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式