this


this ?
  • 関数の実行時に呼び出しメソッドによって決定される特殊なオブジェクト.
  • 関数を実行するときに決定されるので、これはコードの内容に依存します.
  • どうやって実行しますか?
    呼び出し
  • 関数(ほとんど使わない)
  • メソッド呼び出し時
  • の新しいキーワード呼び出しジェネレータを使用する場合
  • .
  • コール、Applyコール
  • この二つのやり方によって、この点が決まった.
    メソッドを呼び出すときのこの値
  • を運転するとき、温度点左側のオブジェクト
  • newキーを使用してジェネレータを呼び出す場合
  • 新しく作成されたインスタンスオブジェクト
  • コール、apply呼び出し時
  • が最初のパラメータとして渡されるオブジェクト
  • 👀 注意事項
    矢印関数でthisを使用しないでください.
    矢印関数はこの点を決定しません!
    これを使用するには、通常の関数を使用します.
    .call .apply .bind ?
  • 関数を呼び出す方法にかかわらず、指定できます.
  • コールメソッド
  • は、すべての関数で使用でき、特定の値として指定できます.
  • の最初のパラメータは無条件にこの値です.
  • の2番目のパラメータから、通常の関数のようにパラメータを直接受け入れます.
  • 適用方法
  • 関数パラメータを処理する方法に加えて、callと一致する.
  • の最初のパラメータは無条件にこの値です.
  • の2番目のパラメータから、パラメータを配列として受け入れます.
  • 呼び出しと適用例
    const nike = {
      name : "Nike"
    }
    
    const adidas = {
      name : "Adidas"
    }
    
    function showBrand(){
     console.log(this.name); 
    }
    
    function update(price,category){
      this.price = price;
      this.category = category;
      
      update.call(nike, 20000, "Shoes"); // call은 2번째 인자부터 직접 받는다.
      console.log(nike); // {name : "Nike", price : 20000, category : "Shoes"}
      
      update.apply(adidas,[30000, "T-shirt"]); // apply는 2번째 인자부터 배열로 받는다.
      console.log(adidas); // {name : "Adidas", price : 30000, category : "T-shirt"}
    bindメソッド
  • 関数の値は、永続的に変更できます.
  • ビットメソッドのように、最初のパラメータはこの値でなければなりません.
  • を直ちに実行するのではなく、バインド関数を返します.
  • const nike = {
      name : "Nike"
    }
    
    const adidas = {
      name : "Adidas"
    }
    
    function showBrand(){
     console.log(this.name); 
    }
    
    function update(price,category){
      this.price = price;
      this.category = category;
      
    updateNike = update.bind(nike); // 이 함수는 항상 nike를 this로 받는다.
    updateNike(40000, 'Shoes'); // {name : "Nike", price : 40000, category : "Shoes"}