Javascript 使用$而不是querySelector()

Javascript 使用$而不是querySelector(),javascript,Javascript,我想实现一些东西来让我自己而不是写东西。querySelector()要写$,我已经解决了一半的问题,那就是当我想制作文档时。querySelector()相反,我现在可以使用$ <div> <button>hi</button> </div> let $ = (x) => { return document.querySelector(x); } div = $("div"); 我想这样

我想实现一些东西来让我自己而不是写东西。querySelector()要写$,我已经解决了一半的问题,那就是当我想制作
文档时。querySelector()
相反,我现在可以使用
$

<div>
<button>hi</button>
</div>
    let $ = (x) => {
        return document.querySelector(x);
    }
div = $("div");
我想这样做,我对原型有一点了解,但我不知道如何实现这个东西,如何实现


[编辑]:我看到很多人说这是一个糟糕的实现,你能告诉我为什么吗?

如果你不想弄乱原型,你可以让
$
接受第二个参数,从中选择父参数

const$=(x,父项=文档)=>{
返回parent.querySelector(x);
}
常数div=$(“div”);
常量按钮=$(“按钮”,div);
控制台日志(按钮)

你好

如果不想弄乱原型,可以让
$
接受第二个参数,即要从中选择的父参数

const$=(x,父项=文档)=>{
返回parent.querySelector(x);
}
常数div=$(“div”);
常量按钮=$(“按钮”,div);
控制台日志(按钮)

你好

不建议这样做,但您可以修改
元素.prototype
文档.prototype

Element.prototype.$ = Document.prototype.$ = function(x){
    return this.querySelector(x);
}

不建议这样做,但您可以修改
元素.prototype
文档.prototype

Element.prototype.$ = Document.prototype.$ = function(x){
    return this.querySelector(x);
}

可能不是最好的方法,但您可以将属性$分配给查询该元素的函数的元素

let$=(x)=>{
设el=document.querySelector(x)
el.$=(y)=>el.querySelector(y)
返回el;
}
div=$(“div”);
console.log(div.$('button'))

你好

可能不是最好的方法,但是您可以将属性$分配给查询该元素的函数的元素

let$=(x)=>{
设el=document.querySelector(x)
el.$=(y)=>el.querySelector(y)
返回el;
}
div=$(“div”);
console.log(div.$('button'))

你好
window.$=HTMLElement.prototype.$=函数(选择器){
如果(此===窗口){
返回单据查询选择器(选择器);
}否则{
返回此.querySelector(选择器);
}
};
log($('div').$('button'))

你好
window.$=HTMLElement.prototype.$=函数(选择器){
如果(此===窗口){
返回单据查询选择器(选择器);
}否则{
返回此.querySelector(选择器);
}
};
log($('div').$('button'))

你好

它非常简单,您只需要两行代码就可以按预期工作。

Document.prototype.$ = Document.prototype.querySelector
Element.prototype.$ = Element.prototype.querySelector

它非常简单,您只需要两行代码就可以按预期工作。

Document.prototype.$ = Document.prototype.querySelector
Element.prototype.$ = Element.prototype.querySelector

尝试使用子元素,如
div.children()
如果您想这样使用它,您可能必须将
$
附加到
元素。prototype
@Taplar,回答得好,几秒钟前我在MDN上读到了这方面的内容,当我这样做时,我需要保留我编写的函数吗?换句话说,这个解决方案会取代我为“文档”编写的函数的需要吗?试着使用像
div.children()
这样的子函数。如果你想这样使用它,你可能必须将
$
附加到
元素。prototype
@Taplar,回答得好,几秒钟前我在MDN上读到过这方面的内容,当我这样做时,我是否需要保留我编写的函数?换句话说,这个解决方案会取代我为“文档”编写的函数吗?这是一个非常好的主意,但是,我想错过原型,我喜欢这件困难的事情。请告诉你为什么实现它是个坏主意?提供了一些解释这是一个非常好的主意,但是,嗯,我想错过原型,我喜欢艰难的事情。请告诉你为什么实现它是一个坏主意?提供了一些解释。我认为没有必要将函数添加到
窗口
对象。您可以单独定义函数,然后将其添加到
HTMLElement
prototype-->
HTMLElement.prototype.$=$。通过这种方式,您可以将其作为函数或html元素上的方法调用。我只是这样链接它,因为全局范围中的
var$=method
实际上只是将其附加到窗口@如果你看一下这个片段,我把它称为一个函数和一个方法,:)我个人认为整个方法是有问题的。对于那些熟悉jQuery的人来说,看到使用
$
时的本能反应是期望它是jQuery。像这样使用它肯定会导致混乱。不要认为有必要将函数添加到
窗口
对象中。您可以单独定义函数,然后将其添加到
HTMLElement
prototype-->
HTMLElement.prototype.$=$。通过这种方式,您可以将其作为函数或html元素上的方法调用。我只是这样链接它,因为全局范围中的
var$=method
实际上只是将其附加到窗口@如果你看一下这个片段,我把它称为一个函数和一个方法,:)我个人认为整个方法是有问题的。对于那些熟悉jQuery的人来说,看到使用
$
时的本能反应是期望它是jQuery。这样使用它必然会导致混乱。