Javascript 如何创建像jquery一样充当函数的包装器对象
我不知道从哪里开始,但我想要或需要的是一个HtmleElement的包装函数,所以我不扩展HtmleElement类,而是先返回我自己的对象,然后检查has类,看看元素是否有类等等,但我的代码根本不起作用,它说$(…)。hasClass不是一个函数Javascript 如何创建像jquery一样充当函数的包装器对象,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我不知道从哪里开始,但我想要或需要的是一个HtmleElement的包装函数,所以我不扩展HtmleElement类,而是先返回我自己的对象,然后检查has类,看看元素是否有类等等,但我的代码根本不起作用,它说$(…)。hasClass不是一个函数 $ = function(a, b) { this.$el = document.querySelector(a); return this; } Object.assign($.prototype, { hasClass: funct
$ = function(a, b) {
this.$el = document.querySelector(a);
return this;
}
Object.assign($.prototype, {
hasClass: function(selector) {
return this.$el.classList.contains(selector);
}
})
console.log($('#list').hasClass('list'));
您就快到了-问题是独立表达式
$('#list')
将具有默认的调用上下文窗口
(函数中的this
值)。如果要创建可以使用原型方法的实例,请在调用$
之前放置new
:
const$=函数(a,b){
此.$el=document.querySelector(a);
}
Object.assign($.prototype{
hasClass:函数(选择器){
返回此.el.classList.contains(选择器);
}
})
log(新的$('#list').hasClass('list');
log(新的$('#list2').hasClass('foo'))代码>
在函数内部使用返回函数的替代方法
const$=函数(a,b){
var elem=document.querySelector(a);
返回{
hasClass:函数(选择器){
返回elem.classList.contains(选择器);
},
addClass:函数(cls){
元素类列表添加(cls)
}
}
};
log($('#list').hasClass('list'));
console.log($('#list2').hasClass('foo'));
$('#list2').addClass('color#red')代码>
。颜色为红色{
颜色:红色
}
您好
很酷,但我不想每次都在$('')前面加上关键字“new”,所以该Use对象的工作原理是什么。创建
,就像在第二个代码段中,它说proto未定义按下答案中的“Run code snippet”按钮查看它的运行情况-在这里工作很好。您确定在代码中定义了proto
?我的要点之一是使用Object.assign($.prototype,{});现在你把它拿走了