2017-05-29 7 views
0

Array.prototypeには、jQueryのaddClass/removeClassのように動作する2つのメソッドを追加したいと思います。これは私が書いたものです:私はそれがJSのプロトタイプに建てにメソッドを追加することが一般的に悪い考えだと言われたので、私は最善の選択肢は、潜在的な落とし穴を避けるためだろうかと思ったネイティブ配列のプロトタイプメソッドを追加する

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

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

私のアイデア:方法は、すでにわずか2つの引数を取り正常な機能を作る

  • が存在する場合

    1. チェック、アレイとクラス名
    2. は、DOMを持つことになります私の新しいカスタムオブジェクトを作成します私が作った操作方法

    私はまたhttps://github.com/franciscop/umbrella/blob/master/src/plugins/addclass/addclass.jsとそれがどのように実装されているのか見ています。

  • 答えて

    1

    ええ、時には、組み込みのJSプロトタイプにいくつかの余分なメソッドがあります。このような状況では、それがすでに存在する場合、私はチェックしない場合は方法が列挙されないように、あなたはObject.definePropertyを使用する必要があります。

    if (!Array.prototype.addClass) 
    Object.defineProperty(Array.prototype, 'addClass', { 
        value: function(className) { 
         this.forEach((element) => { 
          element.classList.add(className); 
         }); 
        } 
    }) 
    

    あなたがmozilla's documentationで持っているすべてのオプションをチェックすることができます。

    関連する問題