如何实现输出ok
if(a == 1&& a==2 && a==3){
console.log('ok')
}
思路, a 可以转成1 也可以转成 2,3 那个类型可这么转换?
- 字符串: 字符串->数字,所以不可以
- 布尔: boolean不是转成1就是2, 所以也不可以
- ull跟undefined: 这个就跟不用说 null->0 undefined=> NaN
- 对象: 也就剩下这个了, 正好这个就可以实现, a首先要转成string然后转number跟 1 2 3对比, 要是调用原型上的方法肯定不行, 因为转成数字之后, 数字就固定了, 这个数字是不会改变的, 怎么办 只能自己写一个a对象的私有属性方法代替原型上的方法, 这样就可以控制toSring改变了,No bb Show you code
var a = {
n: 0,
toString: function(){ //写一个私有属性方法
return ++this.n;
}
}
还有一种更骚的操作, 直接替换原型上toSting方法, 项目上不建议这么干, 修改原型上方法是大忌, 容易翻车 这里学习就无所谓了, 思路是: 使用shift方法, 每次调用弹出数字第一个数字, 或者使用pop
let a = [1, 2, 3];
a.toString = a.shift;