       endfunc(...)
          次の処理です。上記の通り、引数を受け取ることができます。
 ###
-target['_while'] = _while = (f_judge, firstarg_array, loopfunc, endfunc) ->
+target['_while'] = _w = (f_judge, firstarg_array, loopfunc, endfunc) ->
   if firstarg_array?
     firstarg_array = []
   (y (func) ->
     return ->
-      if f_judge.apply null,arguments
-        loopfunc.apply null,[->
+      if f_judge.apply this,arguments
+        loopfunc.apply this,[->
           #_break
-          endfunc.apply null,[].slice.call(arguments)
+          endfunc.apply this,[].slice.call(arguments)
         ,->
           #_next
-          func.apply null,arguments
+          func.apply this,arguments
         ].concat([].slice.call(arguments))
       else
-        endfunc.apply null,[].slice.call(arguments)
-  ).apply null,firstarg_array
+        endfunc.apply this,[].slice.call(arguments)
+  ).apply this,firstarg_array
 
 ###
    exception handling

  (y (func) ->
    return ->
      if f_judge i
        loopfunc.apply null,[i,->
          #_break
          endfunc.apply null,[i].concat([].slice.call(arguments))
        ,->
          #_next
          i = f_iter i
          func.apply null,arguments
        ].concat([].slice.call(arguments))
      else
        endfunc.apply null,[i].concat([].slice.call(arguments))
  ).apply null,firstarg_array

###
   for in Array or Object

    if isarr
      for val,i in obj
        num++
        applyfunc.apply this,[val,i,->
          next.apply this,[num,endfunc].concat([].slice.call(arguments))
        ].concat(applyargs_array)
    else
      for key,val of obj
        num++
        applyfunc.apply this,[key,val,->
          next.apply this,[num,endfunc].concat([].slice.call(arguments))
        ].concat(applyargs_array)
  )(->
    count = 0
