我想在Array.prototype中添加两个方法,它们的工作方式有点像addClass / jQuery的removeClass。这就是我写的:
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原型中添加方法通常是个坏主意,所以我想知道最好的选择是如何避免潜在的问题。
我的想法:
我还将研究https://github.com/franciscop/umbrella/blob/master/src/plugins/addclass/addclass.js及其实现方式。
发布于 2017-05-29 10:34:49
是的,有时我们喜欢在JS原型中有一些额外的方法。在这些情况下,我检查它是否已经存在,如果不存在,则应该使用Object.defineProperty,以便该方法不可枚举:
if (!Array.prototype.addClass)
Object.defineProperty(Array.prototype, 'addClass', {
value: function(className) {
this.forEach((element) => {
element.classList.add(className);
});
}
})您可以检查mozilla的文件中的所有选项。
https://stackoverflow.com/questions/44239963
复制相似问题