Ran*_*lue 10 javascript google-chrome
在Chrome中,请在控制台中尝试以下操作.第一
console = 0;
Run Code Online (Sandbox Code Playgroud)
指定值0来console.然后
console // (prints `0`)
Run Code Online (Sandbox Code Playgroud)
检查我们是否已正确覆盖console.最后,
delete console
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,console现在持有原始Console对象.实际上,delete关键字"resurected" console,而不是消灭它!
这是预期的行为吗?这在Chromium代码中实现了什么?
Ole*_*kov 12
如果delete运算符成功,它将完全从对象中删除该属性,尽管这可能会在对象的原型上显示类似命名的属性.
您delete通过原型链继承了简单的unhadows本地属性.
有些浏览器window继承了本机原型,如果你真的想知道那么多细节,你就会查看源代码以了解属性是如何继承的,但大多数它们的工作方式与JS自己的有关.