我怎样才能为函数“document.getElementById”起别名,我已经看到它使用 $ 完成了
谢谢
var $ = document.getElemenyById.bind( document );
可能是最简单/最短的方法:
function $(id) { return document.getElementById(id); };
这是我在自己的图书馆中使用的东西。DOM
是类并且$
是一个函数,它是函数的快捷实现getElementById
:
function DOM()
{
this.$ = function(elementIDs)
{
var el;
// If an array of element names is passed.
if (arguments.length > 1)
{
var elements = [];
var length = arguments.length;
for (var i = 0; i < length; i++)
{
// Call this function recursively for each passed parameter.
elements.push(this.$(arguments[i]));
}
return elements;
}
// If a single element name is passed.
if (typeof(elementIDs) == "string")
{
el = document.getElementById(elementIDs);
}
return el;
}
}
用法:
var el = new DOM().$("elementID");
您可以将其别名为顶级窗口元素。
ES6 中引入的新特性让我们改进了 Chris Lloyd 的回答,简化了:
function $(id) { return document.getElementById(id); };
到:
const $ = id=> document.getElementById(id);
facebook 的 connect-js在src/core/prelude.js中执行以下操作:
if (!window.FB) {
FB = {
// ...
$: function(id) {
return document.getElementById(id);
}
// ...
}
}
然后,要使用它,他们会:
FB.$('name-of-id');
初始块创建全局对象 FB。他们使用这个对象 FB 作为命名空间,并在其中定义所有对象、属性和函数。这样,只要其他代码不使用全局对象 FB,它就可以与其他 JavaScript 代码一起使用。
function $( s ) {
return document.getElementById( s ) ? document.getElementById( s ) : "";
}
$( "myId" );
这假设您只想使用美元函数(选择器)来获取 ID。我没有对此进行测试,但它应该可以工作。
上次看 jQuery 的核心时,它接受一个字符串作为参数,然后使用正则表达式来确定它是什么类型的选择器。
当您看到 $() 函数时,它可能是一些库,例如 jQuery 或 Prototype。$ 函数不是 document.getElementById 的别名,而是一个扩展函数功能的包装器。
要创建自己的包装器,您可以编写一个函数“别名”:
var alias = document.getElemenyById;
或者
function alias(id) { return document.getElementById(id); }
但实际上,我会使用可用的库之一,例如 jQuery 或 Prototype。