Javascript的“文档”对象可以用作变量吗?

时间:2013-01-17 00:16:56

标签: javascript variables dom object document

我想知道是否可以添加到Javascript的document对象。像:

var document = {
    name: "My Name"   
}
  • 这在JavaScript中是合法的吗?
  • 如果是,它被认为是“良好做法”,还是应该避免它?
  • 如果我将其定义为变量,那么它是否被视为唯一对象,而不是JS DOM对象?

我对JavaScript很新,任何帮助都会非常感激。

修改

在评论中进行了一些对话并稍微考虑一下之后,我真的想知道我是否可以操纵document变量并仍然使用document进行正常使用。

6 个答案:

答案 0 :(得分:16)

  • 可以这样做
  • 不应该那样做

document只是global / window对象的另一个属性。如果在范围内将其声明为正式参数或变量,则查找过程将首先匹配您声明它的范围中的名称,因此它有点重叠。

无论如何,你不想这样做,为什么?对于您和正在查看代码的任何其他人来说,它会让您感到困惑。它的非常糟糕的做法

实际上,这就是大多数“高级”javascript片段/库以封闭的功能范围开头的原因

(function( window, document, undefined ) {
    // window will always reference the "window" object that got originally passed in
    // document will always reference the "document" object that got originally passed in
    // undefined will always reference the "undefined value" that got originally passed in
}( window, window.document ));

..只是为了避免,这样称为混蛋效果。如果这样的闭包在文件的最顶部开放,它确保你引用原始对象,以防万一有些天才有好主意覆盖/重叠它们。

  

结论:您当然可以自由选择您的姓名   变量随意,但你真的不应该使用这样的名称   着名的名称,如windowdocumentundefined等等   显而易见的原因。

答案 1 :(得分:4)

你说你正在做什么 - 添加到document对象 - 不是你的代码实际做的。

{/ 1>} 如果要添加,请使用以下内容:

document

这样您仍然可以使用document.name = "My Name" 。但是,它通常仍然是不好的做法 - 您可以使用不同的对象而不是文档:

document

然后myObject = {name:"My Name"}; 仍然是全球性的。修改myObject对象可能会产生不幸的副作用。

答案 2 :(得分:3)

正如我在评论中指出的那样,ECMAScript规范第15章告诉我们哪些对象是内置的; document不是其中之一。

当您在该上下文中使用Javascript时,它只是您的Web浏览器设置的变量,因此,您可以使用DOMElement对象或其他类型的对象或其他任何内容将其覆盖到您的内容中。你喜欢。

然而,由于所有明显的原因,这是一个坏主意。

您可以属性添加到document对象,而不会让人感到困惑,但我仍然无法想到有任何理由这样做。

答案 3 :(得分:3)

您可以扩充或修改JS或给定浏览器中开箱即用的任何对象。

均匀    var Object = {       名称:“特雷弗”     };     的console.log(对象);

将记录:对象{名称:“Trevor”}尽管几乎所有内容都是由JS中的对象构成的。

然而,不,这是一种可怕的做法。

答案 4 :(得分:1)

你可以,但这不是一个好主意,请阅读article

您可以在事故中覆盖事物。您可以增加所需的性能开销。而且你必须要小心,因为不同的浏览器会有不同的行为。

答案 5 :(得分:1)

document变量是一个全局变量,表示您正在查看的当前页面(在某种意义上)。

即使它不在reserved keywords of javascript中,也不应该这样使用它,因为你可以覆盖文档对象(see here)(虽然不像你想的那么简单) ,那么你将覆盖对旧的引用并且时间不好。

所以是的,你可以做到,不,你不应该。这是不好的做法。尝试选择一个不同的名称,这样接管代码的人不会丢失(或对你生气!)