console.log("Hello JSRUN! \n\n - from NodeJS .");
function bind (context, ...args) {
return function() {
console.log('context', context)
console.log('args', args)
return Function.prototype.apply(context, args)
}
}
var a = 2
function b () {
console.log('a', this.a)
}
const test = {
a: 1
}
b()
b.bind(test)
function deepClone (origin) {
if (!origin) return;
let target = {}
for (let key in origin) {
if (typeof origin[key] === 'object') {
if (origin[key] instanceof Array) {
target[key] = []
target[key].push(deepClone(origin[key]))
} else {
target[key] = {}
target[key] = deepClone(origin[key])
}
} else {
target[key] = origin[key]
}
}
return target
}
function deepClone (origin) {
if (!origin) return
if (typeof origin === 'object') {
let target = Array.isArray(target) ? [] : {}
for (const key in origin) {
target[key] = deepClone(origin[key])
}
return target
} else {
return target
}
}
const throttle = (fn, delay) => {
let lastTime;
return (...args) => {
let now = Date.now()
if (lastTime + delay < now) {
lastTime = now
return fn(...args)
}
return
}
}
throttle(2, 3, 4, 5)