跳到主要内容

控制台console.log的bug

(36 封私信 / 80 条消息) JS入门 对象的delete函数会影响console.log输出吗? - 知乎 (zhihu.com)

为什么会发现这个问题,原由是在学习prototype时候测试了如下代码:

let obj = {
    eats: true
};

function Rabbit() { }

Rabbit.prototype = obj;
let rabbit = new Rabbit();
console.log()
Rabbit.prototype = {};

console.log(rabbit.eats); //true

delete obj.eats;

console.log(rabbit.eats);//undefine

结果控制台显示的对象原型里没有eats属性,似乎delete先于console.log()删掉了eats,

实际上是浏览器的一个bug,console.log具有及时性,在你点击的那一刻确定并保存不变。