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