メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • オブジェクトにある関数の実行スコープに関して

オブジェクトにある関数の実行スコープに関して

javascript
javascript

JavaScriptにあるキーワード"this"の意味の理解が非常に重要である。関数、オブジェクトを呼出し主が変わると、"this"のオーナーが変わる。

ここで、オブジェクト内にある関数を実行するスコープの例で違う結果にあることを説明する

"this"がオブジェクトの呼び出し主である

  • グローバルスコープとオブジェクトスコープ(ローカルスコープ)ので"this"が変わる例
  • オブジェクトスコープ内で実行結果:50となる
  • グローバルスコープで実行結果:10となる

関数をオブジェクトから取り出すかの注意

  • 上記例のコードが以下のようで
    var x = 10 ;                                 // Global変数
    var obj  = {
       x : 50 ,                                  // オブジェクト内変数
       get_x : function( ) { return this.x ; }   // 関数を変数の値に
    } ;
    
    var obj_result = obj.get_x() ;              // オブジェクト内で関数実行
    console.log( obj_result ) ;
    
    var global_result = obj.get_x ;            // オブジェクト内の変数取得
    console.log( global_result ()  ) ;         // Global環境で実行
    
  • 4行目にget_x関数にキーワード"this"の使用
  • 7行目はそのオブジェクトが関数を呼出し(実行)して、結果を返すので、実際にローカルスコープでの実行となり、"this"がそのオブジェクト「obj」に指している
  • 10行目は関数を実行せず変数「bloble_result」に渡すだけだった
  • 11行目はグローバルスコープで実行するので、"this"がグローバル変数「window」に指している
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)