gpt4 book ai didi

javascript - 如何使用箭头函数创建构造函数

转载 作者:行者123 更新时间:2023-11-30 19:17:36 27 4
gpt4 key购买 nike

<分区>

我正在尝试使用 JavaScript 创建一个简单的菜单切换功能。我正在使用带有函数的构造函数来实现它,如下所示:

具有匿名函数的构造函数:

(function(){
// Constructor
function Menu(selector){
let menu = document.querySelector(selector);
return {
activateToggle: function(){
menu.addEventListener("click", function(){
menu.parentNode.querySelector("ul").classList.toggle("hidden");
});
},
default: function(){
menu.parentNode.querySelector("ul").classList.add("hidden");
}
}
}

let topMenu = new Menu(".burger");
topMenu.default();
topMenu.activateToggle();
let bottomMenu = new Menu(".bottom-burger");
bottomMenu.activateToggle();
})();
.hidden {
display: none;
}
<!--Top Menu-->
<div class="topmenu">
<button class="burger">Top Menu</button>
<ul><li>Item 1</li><li>Item 2</li><li>Item 3</li><li>Item 4</li><li>Item 5</li></ul>
</div>
<!--Bottom Menu-->
<div class="bottommenu">
<button class="bottom-burger">Bottom Menu</button>
<ul><li>Item 1</li><li>Item 2</li><li>Item 3</li><li>Item 4</li><li>Item 5</li></ul>
</div>

带有箭头功能的相同菜单:

(function(){
// Constructor
let Menu = (selector) => {
let menu = document.querySelector(selector);
return {
activateToggle: () => menu.addEventListener("click", () => menu.parentNode.querySelector("ul").classList.toggle("hidden")),
default: () => menu.parentNode.querySelector("ul").classList.add("hidden")
}
}

let topMenu = new Menu(".burger");
topMenu.default();
topMenu.activateToggle();
let bottomMenu = new Menu(".bottom-burger");
bottomMenu.activateToggle();
})();
.hidden {
display: none;
}
<!--Top Menu-->
<div class="topmenu">
<button class="burger">Top Menu</button>
<ul><li>Item 1</li><li>Item 2</li><li>Item 3</li><li>Item 4</li><li>Item 5</li></ul>
</div>
<!--Bottom Menu-->
<div class="bottommenu">
<button class="bottom-burger">Bottom Menu</button>
<ul><li>Item 1</li><li>Item 2</li><li>Item 3</li><li>Item 4</li><li>Item 5</li></ul>
</div>

以上代码抛出错误“Menu is not a constructor”。我试图找到有关如何使用箭头函数创建构造函数的答案,但大部分文章都说我们不能将 new 关键字与箭头函数一起使用。

那么用箭头函数创建构造函数的正确方法是什么?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com