1、bind函数--修改this指向,返回一个函数
2、返回一个函数,这个函数继续增加参数,会放在其后
javascript
// 测试 concatMethods 参数接收情况
function concatMethods(...methods) {
console.log('实际接收到的参数数量:', methods.length);
console.log('参数类型:', methods.map(m => typeof m));
let res = false;
for (const method of methods) {
const isBoolean = (typeof method === "function" ? method() : method);
console.log('方法执行结果:', isBoolean);
res = res || isBoolean;
if (isBoolean) {
break;
}
}
return res;
}
// 模拟你的代码场景
const btnDisabled = () => {
console.log('btnDisabled 执行了');
return false;
};
const screenControl_Disabled = (device) => {
console.log('screenControl_Disabled 执行了,设备参数:', device);
return true;
};
const DEVICE_SUPPORT = { res: 'test-device' };
// 模拟 bind 调用
const boundFunc = concatMethods.bind(
this,
btnDisabled,
screenControl_Disabled.bind(null, DEVICE_SUPPORT.res)
);
console.log('=== 开始执行 ===');
const result = boundFunc(true, 6666, "ka");
console.log('最终结果:', result);
// === 开始执行 ===
// 实际接收到的参数数量: 5
// 参数类型: [ 'function', 'function', 'boolean', 'number', 'string' ]
// btnDisabled 执行了
// 方法执行结果: false
// screenControl_Disabled 执行了,设备参数: test-device
// 方法执行结果: true
// 最终结果: true