3

私は現在、かなり大きなプラグインに取り組んでいます。パブリック メソッドを追加するこのパターンに欠点があるかどうか疑問に思っています。

編集:明確にするために、この方法で私が見ることができる利点は、プラグインのスコープで利用可能なプライベート変数を使用でき、メソッドを簡単にチェーンできることです。見えないデメリットとは?正常に動作していますが、これがスケーラビリティの観点から大きなプラグインに推奨されるかどうかはわかりません.

簡略化されたコードは次のとおりです。

;(function($){

  $.fn.myplugin = function () {

    var self = this

    var publicMethods = {      
      one: function () {
        ...
        return self
      },
      two: function () {
        ...
        return self
      },
      three: function () {
        ...
        return self
      }
    }

    for (var m in publicMethods)
      self[m] = publicMethods[m]

    return self

  }

}(jQuery))

// Usage
var $myplugin = $('#foo').myplugin()
$myplugin.one().two().three()
4

1 に答える 1

2

はい、デメリットがあります。

  1. jQuery の内部名前空間をすべてpublicMethods. これはone()two()およびthree()を他の jQuery オブジェクトでも呼び出すことができることを意味します。呼び出した後.myplugin()、意図しない結果が生じる可能性があります。

  2. コードをこの奇妙な方法 (関数内部のオブジェクト) で構造化しておくことは、非常に保守が困難です。それは基本的にあなたが達成しようとしていることだからですpublicMethods$.fn

を作成しone()、スコープ内でのみアクセスできるようにすることをおtwo()勧めthree()します。myplugin()$('#foo').myplugin().one()$('#foo').one()

于 2012-06-29T09:47:38.487 に答える