Search code examples
javascriptobjectthis

how to get parent object property in foreach function


for example I can't reach 'this.ret' so use 'obj.ret' in loop.

is this right way?

const obj = {
  ret : 0,
  sum : function(arr){
     $.each(arr, function(i, v){
         obj.ret += v //Can't reach this.ret
     })
     this.print();
  },
  print : function(){
    alert('sum is ' + this.ret)
  }
}

    
let arr = [1,2,3,4,5]
obj.sum()

Solution

  • You can use Arrow Function

    const obj = {
      ret : 0,
      sum : function(arr){
         $.each(arr, (i, v) => {
             this.ret += v
         })
         this.print();
      },
      print : function(){
        console.log('sum is ' + this.ret)
      }
    }
    
        
    let arr = [1,2,3,4,5]
    obj.sum(arr)
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>