我一直想知道如何创建像jQuery这样的函数。例如:$(ID).function()
其中ID是HTML元素的id,$
是一个函数,它返回元素“ID”的document.getElementById引用,函数是一个自定义的javascript函数。
我正在创建一个实现某些功能的小库。我想在不使用jQuery的情况下使用那个sintax。
现在,我的问题是:我如何实现这一点? tecnique允许的名称是什么?
编辑:
我想做的是:
HTMLElement.prototype.alertMe = function(){alert(this.value);}
然后,当我呼叫document.getElementById('html_input_id').alertMe()
时,它必须显示带有输入值的警告框。但是HTMLElement.prototype
在IE中不起作用。
答案 0 :(得分:1)
$ = function(id) {
return document.getElementById(id);
}
答案 1 :(得分:1)
好的,看,你问的内容有很多细节和含义。 jQuery的代码是开源的,您可以阅读它的详细信息;你也可以找到一本好的Javascript书,即O'Reilly权威指南。
$
只是JS中名字的一个字符,所以正如其他一些答案所示,没有理由你不能只用这个名字写一个函数:
var $ = function(args){...}
由于每个人和他的兄弟都使用这个技巧,你也想拥有一个更长的名字,所以你可以混合使用。
var EstebansLibrary = function(args){...}
var $ = EstebansLibrary; // make an alias
由于你最终使用入口点函数做了不同的事情,你需要知道JS如何使用参数 - 查找arguments
对象。
您需要对此进行打包,以便您的内部不会污染命名空间;你会想要一些module pattern的变体,它会像
那样var EstebansLibrary = (function(){
// process the arguments object
// do stuff
return {
opname : implementation,...
}
})();
您最终希望为继承做好准备,这意味着将这些功能放入prototype
对象。
答案 2 :(得分:0)
您可以使用原型为Element原型分配新功能。
Element.prototype.testFunction =函数(STR){警报(STR)};
这将为所有HTML元素提供函数'testFunction'。
您可以通过这种方式扩展任何基础对象,即Array,String等。
这可以在没有任何插件的情况下工作 - 虽然这表示我认为它不适用于IE。我相信像MooTools和jQquery这样的库使用DOM元素创建自己的继承,以确保跨浏览器兼容性,尽管不引用我的。