使用document.getElementById和document.createElement的变量

时间:2012-11-03 14:24:45

标签: javascript variables

  

可能重复:
  Why can’t I have a direct reference to document.createElement?

我对Js很新,一直在玩它。 自document.getElementById& doucment.createElement很长,我决定把它放在一个变量中; 例如var d = document.createElement;

  1. 然而,当我把它称为var someElement = d("p");时,我得到" TypeError:非法调用"而且我不确定这意味着什么。

  2. 如果我将document对象var d = document;分开,然后给它一个这样的属性:d.e = d.createElement;然后使用它创建一个元素someElement = d.e("p")它可以工作

  3. 有人可以解释导致失败的原因以及导致失败的原因吗? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您需要将它们包装在一个函数中,以便可以从document对象中调用它们。

var d = function(name) {
    return document.createElement(name);
};

这只是createElement方法实现的要求。它需要知道它应该从document创建元素。

从对象分离方法时,该方法没有原始对象的内存。

这就是为什么这样做的原因:

d.e("p");

由于e是对createElement方法的引用,并且是从d调用的,它是document的引用,因此您实际上在做同样如下:

document.createElement("p");

答案 1 :(得分:0)

在JavaScript中使用此表示法时:

objectName.methodName(arguments)

该方法被通知(通过特殊值this)您正在调用它的对象。因此,当您将方法从一个对象复制到另一个对象时,它实际上将成为新对象的方法。

如果将方法视为普通函数并将其复制到局部变量,然后正常调用它:

localVariableNameHoldingMethod(arguments)

然后它的this将成为全局对象(window)。