CoreJavaScript_03.this(2)


これらの内容は「Core Javascript」の書籍を参考にして作成され、初心者開発者に有益な書籍を提供してくれた著者の池恩・鄭在南に感謝します.

これを明示的にバインドします。


call/apply

  • callapply・メソッドを使用して関数を実行し、this値を指定できます.
  • function test() {
      console.log(this);
    }
    
    test(); // 전역객체 출력
    
    test.call({ x: 1 });
    test.apply({ x: 1 });
    // 둘다 {x:1} 출력
  • call vs apply差異
    機能的には同じですが、因子表現が違う
  • function test(x, y) {
      console.log(x);
      console.log(y);
    }
    
    // 두 메서드 모두 첫번째 인자로 this를 지정하고, 두번째 인자부터는 해당 함수의 매개변수(이자)를 대입한다
    test.call(null, 1, 2); // call 메서드는 있는 그대로 나열한다
    test.apply(null, [1, 2]); //  apply 메서드는 배열로 감싸준다

    類似パターンオブジェクト

  • call/applyを使用して、類似した配列のオブジェクトを配列に変換できます.
  • // 유사배열객체
    var obj = {
      0: 'a',
      1: 'b',
      2: 'c',
      length: 3,
    };
    
    // 요소 추가
    Array.prototype.push.call(obj, 'd');
    console.log(obj);
    // {'0': 'a', '1': 'b', '2': 'c', '3': 'd', length: 4 }
    
    // 배열로 전환
    var arr = Array.prototype.slice.call(obj);
    console.log(arr);
    // [ 'a', 'b', 'c', 'd' ]
    しかし,この変換はcall/applyの元の意図と一致せず,コードの解釈が困難であるため,ES 6ではArrayを用いる.fromメソッドが新しく登場しました.
    var arr = Array.from(obj);
    console.log(arr);
    // [ 'a', 'b', 'c', 'd' ]

    コンストラクション関数でコンストラクション関数を使用するには

  • callapply伝達this値により、生成者の再利用性を確保することができる.
  • function Person(name, gender) {
      this.name = name;
      this.gender = gender;
    }
    
    function Student(name, gender, school) {
      Person.call(this, name, gender); // Student 의 this 값을 Person 으로 전달
      this.school = school;
    }
    
    var anw = new Student('son', 'male', 'wecode');
    console.log(anw); // Student { name: 'son', gender: 'male', school: 'wecode' }
    // 이런식으로 this 와 call 사용해서 반복적으로 사용할 수 있다.

    最大値、最小値


    理解できる
  • アレイの最大値、最小値でよく使われるapply構文
  • var arr = [7, 3, 5, 9];
    var max = Math.max.apply(null, arr);
    // max 함수의 매개변수로 배열의 요소를 넣어야할 때 apply 활용하여 배열을 그대로 배치할 수 있다.
    // 첫번째 인자로 null 넣었지만, 사실 이는 this 정보이기 때문에 출력값과는 아무 상관이 없다.
    
    console.log(max); // 9
    スプレッドシート演算子の使用
    配列内の要素を比較する場合は、電子演算子を別の方法で使用することもできます.
    var arr = [7, 3, 5, 9];
    var max = Math.max(...arr);
    console.log(max);
    // 이런식으로 요소만을 복사하는 연산자를 활용하여 간편하게 작성할 수도 있다