 			@apply null, arguments
 			lastTime = currTime
 
-# debounce
+# debounce: delay the call of function
 Function::debounce = (delay = 0.5) ->
 	args = null
 	timeout = null

Function::property = (prop, desc) ->
	Object.defineProperty @prototype, prop, desc

# throttle
Function::throttle = (limit = 0.5) ->
	currTime = 0
	lastTime = 0

		from = 0
	Math.random() * (to - from) + from

# convert an angle from radian to deg
Bu.r2d = (r) -> (r * 180 / Math.PI).toFixed(1)

# get current time
Bu.now = if window?.performance? then -> window.performance.now() else -> Date.now()

# combine the given options (last item of arguments) with the default options
Bu.combineOptions = (args, defaultOptions) ->
	defaultOptions = {} if not defaultOptions?
	givenOptions = args[args.length - 1]
