gpt4 book ai didi

javascript - 奇怪的 JavaScript 函数行为

转载 作者:行者123 更新时间:2023-12-03 06:23:54 28 4
gpt4 key购买 nike

这是 js ninja 的 secret 的小例子:

function addMethod(obj, methodName, fn) {
const old = obj[methodName];


obj[methodName] = function () {
if (fn.length === arguments.length) {
return fn.apply(this, arguments);
} else if (typeof old === 'function') {
return old.apply(this, arguments);
}
};
}

let ninja = {};

addMethod(ninja, 'whatever', a => console.log(`one: ${a}`));
ninja.whatever(1);
addMethod(ninja, 'whatever', (a,b) => console.log(a, b));
ninja.whatever(2, 2);
addMethod(ninja, 'whatever', (a,b, c) => console.log(a, b, c));
ninja.whatever(3);
console.log(ninja);
console.dir(addMethod);

我不明白为什么在这个变量中

const old = obj[methodName];

作为此函数工作

a => console.log(`one: ${a}`)

我想一定有这个功能

(a,b) => console.log(a, b)

因为之前是用ol写的

最佳答案

所有“旧”函数都继续存在,因为每次调用“addMethod”都会创建一个不同的变量“old”(只能在“addMethod”函数体界定的范围内访问)

关于javascript - 奇怪的 JavaScript 函数行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38739327/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com