Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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_Jquery_Html_Css - Fatal编程技术网

Javascript 如何创建像jquery一样充当函数的包装器对象

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

我不知道从哪里开始,但我想要或需要的是一个HtmleElement的包装函数,所以我不扩展HtmleElement类,而是先返回我自己的对象,然后检查has类,看看元素是否有类等等,但我的代码根本不起作用,它说$(…)。hasClass不是一个函数

$ = 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,{});现在你把它拿走了