偶然看到几篇文章,仅仅简单的描述了等于和全等的区别和用法。提出了一下疑问:
1、== 的隐式转换具体是如何转换的?? (这个javaScript高级程序设计中详细写到了,有点复杂)
2、=== 这个是如何实现的???
3、如果我要设计设计俩个对象“相等“ 的话,那么该如何设计??(禁止递归)
偶然看到几篇文章,仅仅简单的描述了等于和全等的区别和用法。提出了一下疑问:
1、== 的隐式转换具体是如何转换的?? (这个javaScript高级程序设计中详细写到了,有点复杂)
2、=== 这个是如何实现的???
3、如果我要设计设计俩个对象“相等“ 的话,那么该如何设计??(禁止递归)
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答857 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
JavaScript
里的原始数据类型和它自己的包装对象两个数据概念一直都被很多人忽略,它的整个实现其实都是基于包装对象。为什么字符串能自动执行原型继承方法,数值也有它的继承方法等等,就是因为在内部实现中对执行中的原始数据类型进行了包装,所以涉及变量这些方法的调用和其他的运算都是经过了一层包装。==
也只是这种特性引起的其一,至于==
和===
如何转换的,我建议去看一下JS权威指南,在书最前面的章节介绍的非常清楚。对象由于是引用类型的对象,要相等必须是引用了同一个内存地址,一般来讲不是赋值给同样的引用,对象是不会相等的,如果你想使对象满足一定的要求就为相等(比如每一个属性和值都相同),那肯定是要用到递归的。