IFEによる客観的JS


JavaScriptは、マルチ風味の獣です


Cとして開発開発者OOP;カプセル化と再ユーザビリティが好きな開発者、バニラJavaScript、およびそのすべての素晴らしい使用は私を怖がらせる-私はIIFEの簡単な概念につまずいまで-すぐに関数の式を呼び出す.

JavaScriptのソースの一部のOOP



JavaScriptで物事を行うには、多くの方法があります、それはOOP開発者のために少し圧倒的なことができます.授業はどこですか.カプセル化はどこですか.それはとても機能的です-そして、とてもOOPの性質に対して非常に.
Iifesは良い(または悪い)かもしれないが、彼らは任意のフレームワークや巧妙なパッケージを使用することなく、バニラJavaScriptに注文をもたらす方法を与える.彼らは比較的簡単で、理解しやすいです-例で見られるように.iIfesは、これを行うには、正しい方法ではない-ちょうど創造的なカオスに注文のビットをもたらします.

最も簡単な例


// Reusable modules
var someModule = (function() {
  // private "members" - Here we use closure to ensure that only the object being returned can access these members
  var privateVar = 'A private variable';

  function privateMethod() {
    console.log('This is a private method')
  };

  return {
    // Public variables
    PublicVar: 'A public variable',

    // Public methods
    publicMethod() {
      console.log('A public function');
    },
    usingPrivateVariables() {
      console.log('Using a private variable')
      console.log(privateVar);
    },
    usingPrivateMethod() {
      console.log('Calling a private method')
      privateMethod();
    }
  };

}());

広告として動作しますか?


someModule.publicMethod();
// Output: 'A public function'

someModule.usingPrivateVariables();
// Output: 'using a private variable'
// Output: 'A private variable'

someModule.usingPrivateMethod();
// Output: 'Calling a private method'
// Output: 'This is a private method'

console.log(someModule.PublicVar)
// Output: 'A public variable'

console.log(someModule.privateVar)
// Output: undefined
// It's private :)

console.log(someModule.privateMethod())
// Output: someModule.privateMethod is not a function
// It's private too!

iifeまたはiffy?



近代的なフレームワークでは、iFesは少し冗長(またはiFy)です-角度、Vueのような、と反応(いくつかの名前にいくつかの)は、物事を行うの構造化された方法で少し概念を少し時代遅れになります.
しかしながら、私はIFAESがASPのように古いプロジェクトで大いに役に立つとわかりました.NET MVC、特にJQueryでミックスに追加しました.実際のjQuery呼び出しを抽象化し、モジュールを個別に呼び出します.プライベート変数とパブリック変数と関数を作成し、モジュール全体の方法でこれを行う.iIfesは私のOOP指向の心に意味をなす方法でコードに再ユーザビリティのレベルを追加します.
彼らは、JavaScriptの他の非常に複雑なblotchesをuntanglingすることで途方もなく私を助けました.