为什么将其他对象分配给内置对象(如文档,窗口)没有意义?

时间:2013-08-30 01:49:53

标签: javascript

<script>
this.document = "xxxx";  // why it doesn't make sense?
console.log(document);   // still show document obj in devtools
</script>

我想这可能是javascript引擎禁止的。

3 个答案:

答案 0 :(得分:1)

window.document不是可写属性。如果你想要一个名为document的局部变量,你可以这样做:

(function(){
  var document = 'xxxx';
  console.log(document);
})();

new function(){
  this.document = 'xxxx';
  console.log(this.document);
};

两者都会记录'xxxx'

答案 1 :(得分:1)

有时它是有道理的 - 允许的,例如你可以重新分配内在函数window.alert

但在99%的情况下,你最好单独留下它。

答案 2 :(得分:1)

重新分配内置的ins会产生不可移植的行为。

图书馆A严重依赖于document.getElementById。库B依赖于它自己的自定义版本,但用自己的自定义版本替换了文档原型上的getElementById。图书馆A休息。

因此,设计用于所有浏览器并针对所有浏览器进行测试的库A将无效。

它与全局变量的论点相同。内置函数基本上是全局变量。