如何实现 a==1 && a==2 && a==3 返回true?
let a = {
i: 1,
toString: function () {
return a.i++;
}
}
a == 1 && a == 2 && a == 3
let a = [1,2,3];
a.toString = a.shift;
console.log(a == 1 && a == 2 && a == 3); // true
Object.defineProperty(this, 'a', {
get: function () {
return this.value = this.value ? (this.value += 1) : 1
}
})
console.log(a===1 && a===2 && a===3) //true
let a = new Proxy({ i: 0 }, {
get: (target, name) => name === Symbol.toPrimitive ? () => ++target.i : target[name],
});
console.log(a == 1 && a == 2 && a == 3); // true
位运算符
什么是可迭代对象
JSON.stringfy
- 首先明确 stringfy 可以接受3个参数. value, repalce, space
- repalce 可以为函数或数组, 如果为函数时, 被序列化的值的每个属性都会经过该函数的转换和处理. 如果为数组时, 则被序列化的值只有包含在数组中的属性才会被序列化
- space 指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数为字符串(当字符串长度超过10个字母,取其前10个字母),该字符串将被作为空格;如果该参数没有提供(或者为 null),将没有空格。