JavaScript 深坑制造者

171 阅读1分钟

功能:挖坑、填坑
工具:铁锹(键盘)

如果你能写出一手好BUG(坑),才是一名合格的键盘操作手!

迷幻之境

const util = {
    equals(a, b) {
        return a === b.valueOf()
    },
    clone(target) {
        const obj = Object.create({ valueOf: () => target })
        Object.assign(obj, target);
        return obj;
    }
}

const obj = { a: 1 } // => { a: 1 }
const newObj = util.clone(obj); // => { a: 1 }
(obj == newObj); // => false
util.equals(obj, newObj); // => true
util.equals(newObj, obj); // => false

运行效果:

image.png

眩晕

const a = {
  _val: 0,
  valueOf() {
    return ++this._val;
  }
}

a == 1 && a == 2 && a == 3 // => true

image.png