大家好,我是林三心,又一周过去了,哎,想想变老,烦死了。今天突然有人问我:(a==1&&a==2&&a==3)有可能是真的吗?当我的脚离他的脸还有一公分的时候,我恍然大悟,哎!好像有点意思。对象类型转换当两种类型不同,进行==比较时,将一种类型转换为另一种类型,然后进行比较。例如,Object类型与Number类型进行比较时,Object类型将转换为Number类型。当Object转换为Number时,会尝试调用Object.valueOf()和Object.toString()获取对应的数字基本类型。vara={i:1,toString:function(){returna.i++;}}console.log(a==1&&a==2&&a==3)//真正的数组类型转换和上面的类型转换一样,数组调用toString()会隐式调用Array.join()方法以及数组shift方法的用法:shift()方法用于从中移除数组的第一个元素,并返回第一个元素的值。如果数组为空,则shift()方法将不执行任何操作并返回undefined。请注意,此方法不会创建新数组,而是直接修改现有数组。所以我们可以看到,当a==1时,会调用toString(),toString()会调用join(),join()等于shift,会是1.vara=[1,2,3]转换为Number类型后;a.join=a.shift;console.log(a==1&&a==2&&a==3);//truedefineProperty使用一个defineProperty使返回值成为三个不同的值。varval=0;Object.defineProperty(window,'a',{//这里需要window,这样下面可以直接使用变量a==get:function(){return++val;}});安慰。log(a==1&&a==2&&a==3)//true你学会浪费了吗?结语我是林三鑫,一个狂热的前端菜鸟程序员。如果你有上进心,喜欢前端,想学前端,那我们可以交个朋友,一起钓鱼哈哈,摸摸鱼群,加我,请注意[思想]
