🔍 [職務に関する質問]-13関数プログラミングとは?


  • JavaScriptモジュールとは?
  • JavaScriptプロトタイプとは?
  • 💬 Answer
    🌏 かんすうしきプログラミング
    👉 関数プログラミングとは?
    ソフトウェアの増加に伴い,複雑なパスタコードの維持が困難になり,この問題を解決するために関数式プログラミングモードに注目し始めた.
    ほとんどのものを純粋な関数に分けて問題を解決する方法.
    小さな問題を解決するための関数を作成し、読みやすさを向上させ、メンテナンスを簡素化します.
    👉 エンクロージャ
    Closerとは、内部関数が外部関数にアクセスできるコンテキストを指す.
    内部関数は外部関数の領域変数にアクセスでき、外部関数の実行が完了し、外部関数が破棄された後も、内部関数は外部関数の変数にアクセスできます.このメカニズムをCloserと呼ぶ.
    function outter(){
        var title = 'coding everybody';  
        return function(){        
            alert(title);
        }
    }
    inner = outter();
    inner();
    この場合、outterを内部から呼び出し、内部()からoutterを終了するが、外部関数の領域変数titleを出力する.
    つまり、Closerとは、内部関数が外部関数にアクセスできる領域変数のことであり、外部関数とは、外部関数を使用する領域変数の内部関数が消えるまで消えない特性のことである.
    👉 プロトタイプ
    Java、Pythonなどのオブジェクト向け言語でよく見られるクラス.
    ただしjavascriptはオブジェクト向けの言語ですが、クラスはなく、プロトタイプです.
    (ES 6にClass構文を追加しました.)
    JavaScriptのすべてのオブジェクトは、デフォルトのデータ型を除いてオブジェクトです.
    オブジェクトを作成するには、自身のプロトタイプを作成するプロトタイププロトタイプオブジェクトを使用してオブジェクトを作成します.作成したオブジェクトには、そのプロトタイプのプロトタイプを表す__proto__속성を参照する非表示のリンクがあります.このリンクは「プロトタイプ」として定義されます.
    function Person() {
      this.eyes = 2;
      this.nose = 1;
    }
    var kim  = new Person();
    var park = new Person();
    console.log(kim.eyes);  // => 2
    console.log(kim.nose);  // => 1
    console.log(park.eyes); // => 2
    console.log(park.nose); // => 1
    この場合、メモリには4つの目と鼻が割り当てられます.
    100個作ると200個配る
    これらの問題をプロトタイプで解決する.
    function Person(){}
    Person.prototype.eyes = 2;
    Person.prototype.eyes = 1;
    
    var kim = new Person();
    var park = new Person();
    この場合、Person.prototypeとは、空のオブジェクトが存在し、Person関数によって生成されたオブジェクト(kim,park)がオブジェクトに存在する値を使用することを意味します.
    目と鼻をどこかに置き、金さんは朴さんと共有して使うということだ.
    📘 リファレンス
    https://velog.io/@kyong/関数-プログラミング-概要
    https://mangkyu.tistory.com/111
    https://opentutorials.org/course/743/6544
    https://medium.com/@bluesh 55/javascript-prototype-了解-f 8 e 67 c 286 b 67