首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >添加本机阵列原型方法

添加本机阵列原型方法
EN

Stack Overflow用户
提问于 2017-05-29 10:13:54
回答 1查看 84关注 0票数 0

我想在Array.prototype中添加两个方法,它们的工作方式有点像addClass / jQuery的removeClass。这就是我写的:

代码语言:javascript
运行
复制
Array.prototype.addClass = function (className) {
  this.forEach((element) => {
    element.classList.add(className);
  });
};

Array.prototype.removeClass = function (className) {
  this.forEach((element) => {
    element.classList.remove(className);
  });
};

有人告诉我,在JS原型中添加方法通常是个坏主意,所以我想知道最好的选择是如何避免潜在的问题。

我的想法:

  1. 检查方法是否已经存在
  2. 只需创建一个普通函数,其中包含2个参数,数组和类名。
  3. 创建我的新的自定义对象,它将具有我构建的DOM操作方法

我还将研究https://github.com/franciscop/umbrella/blob/master/src/plugins/addclass/addclass.js及其实现方式。

EN

回答 1

Stack Overflow用户

发布于 2017-05-29 10:34:49

是的,有时我们喜欢在JS原型中有一些额外的方法。在这些情况下,我检查它是否已经存在,如果不存在,则应该使用Object.defineProperty,以便该方法不可枚举:

代码语言:javascript
运行
复制
if (!Array.prototype.addClass)
Object.defineProperty(Array.prototype, 'addClass', {
    value: function(className) {
        this.forEach((element) => {
            element.classList.add(className);
        });
    }
})

您可以检查mozilla的文件中的所有选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44239963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档