Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类似jQuery的自定义函数_Javascript - Fatal编程技术网

Javascript 类似jQuery的自定义函数

Javascript 类似jQuery的自定义函数,javascript,Javascript,我一直想知道如何创建jQuery之类的函数。例如:$(ID).function() 其中ID是HTML元素的ID,$是返回元素“ID”的document.getElementById引用的函数,函数是自定义javascript函数 我正在创建一个实现一些函数的小库。我想在不使用jQuery的情况下使用sintax 现在,我的问题是:我如何实现这一点?允许这样做的技术的名称是什么 编辑: 我想做的是: HTMLElement.prototype.alertMe=函数(){alert(this.va

我一直想知道如何创建jQuery之类的函数。例如:
$(ID).function()

其中ID是HTML元素的ID,
$
是返回元素“ID”的document.getElementById引用的函数,函数是自定义javascript函数

我正在创建一个实现一些函数的小库。我想在不使用jQuery的情况下使用sintax

现在,我的问题是:我如何实现这一点?允许这样做的技术的名称是什么

编辑:

我想做的是:

HTMLElement.prototype.alertMe=函数(){alert(this.value);}


然后,当我调用
document.getElementById('html\u input\u id').alertMe()
时,它必须显示一个带有输入值的alertbox。但是
HTMLElement.prototype
在IE中不起作用。

您可以使用prototype为元素prototype分配一个新函数

$ = function(id) {
    return document.getElementById(id);
}
Element.prototype.testFunction=function(str){alert(str)}

这将为所有HTML元素提供函数“testFunction”

您可以通过这种方式扩展任何基本对象,即数组、字符串等


这将在没有任何插件的情况下工作——尽管我认为它在IE中不起作用。我相信像MooTools和jQquery这样的库会使用DOM元素创建它们自己的继承,以确保跨浏览器的兼容性,尽管不要引用我的话。

好的,看,你所问的有很多细节和含义。jQuery的代码是开源的,您可以阅读它的详细信息;您最好也能找到一本好的Javascript书籍,O'Reilly权威指南

$
只是JS中名称的一个字符,因此正如其他一些答案所示,没有理由不能使用该名称编写函数:

var $ = function(args){...}
因为每个人和他的兄弟都使用这个技巧,所以你也希望有一个更长的名字,这样你就可以混合东西了

var EstebansLibrary = function(args){...}
var $ = EstebansLibrary; // make an alias
由于您最终使用入口点函数做了不同的事情,因此您需要知道JS如何使用参数——查看
参数
对象

您需要对其进行打包,以便内部不会污染名称空间;您将需要的一些变体,这将使

var EstebansLibrary = (function(){
    // process the arguments object
    // do stuff
    return {
       opname : implementation,...
    }
})();

你最终会希望为继承做好准备,这意味着将这些函数放入
原型
对象中。

为什么不获取jQuery源代码并查看它呢?是的,但我不想创建插件。我根本不使用jQuery。安德烈,我已经尝试了Obj.原型,但是它对IETFrimes风格继承不起作用,肯定对IEThanks Charlie起作用,我会考虑这些技巧。