JavaScript对象快捷方式

hom*_*rrr 1 javascript

我最近尝试在JavaScript中编写内置对象函数的快捷方式.

这里是:

function changeit(){
    var ge = getElementsByTagName() , doc = document;
    doc.ge('div')[0].innerHTML = 'Changed';
}
Run Code Online (Sandbox Code Playgroud)

我虽然它实际上会工作,但事实并非如此.有没有办法让它发挥作用?我的意思是通过var名称调用内置对象函数,它是否适用于所有浏览器?

Poi*_*nty 7

这个:

var ge = getElementsByTagName()
Run Code Online (Sandbox Code Playgroud)

调用函数,或尝试.这个名称没有全局函数,所以它不起作用.同样的,

doc.ge('div')
Run Code Online (Sandbox Code Playgroud)

试图找到"doc"的"ge"属性,它也不存在; 你刚刚声明"ge"是一个局部变量,而不是"doc"的属性.

如果你想要一个更短的名字,只需做这样的事情:

function ge(tagName) { return document.getElementsByTagName(tagName); }
Run Code Online (Sandbox Code Playgroud)

然后你就可以写了

ge('div')[0].innerHTML = 'Changed';
Run Code Online (Sandbox Code Playgroud)


pim*_*vdb 5

该功能getElementsByTagName几乎不存在。您必须将其作为的属性进行访问 document,但是即使如此,您也必须保存对它的引用document

var ge = document.getElementsByTagName.bind(document);
Run Code Online (Sandbox Code Playgroud)

或者,您可以将名称另存为字符串:

var ge = 'getElementsByTagName';
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行以下操作:

document[ge]('div')...
Run Code Online (Sandbox Code Playgroud)

因为obj['foo']等于obj.foo

  • [`Function.prototype.bind`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind)仅在ECMAScript 5(JavaScript 1.8.5)起可用。 (2认同)