如何在javascript中实现调用一个函数来自动调用另一个函数

如何在javascript中实现调用一个函数来自动调用另一个函数,javascript,Javascript,类a中的所有方法都将调用方法b,如何调用c或d自动调用b,而无需在c或d中写入b 甲级{ b{} c{ B console.log123 } d{ B console.log123 } } 您可以遍历a的.prototype属性,并用第一个调用b的方法覆盖每个方法 甲级{ b{console.logb} c{ console.logc } d{ console.logd } } 对于Object.getOwnPropertyNamesa.prototype的常数n{ 常数f=a.原型[n];

类a中的所有方法都将调用方法b,如何调用c或d自动调用b,而无需在c或d中写入b

甲级{ b{} c{ B console.log123 } d{ B console.log123 } } 您可以遍历a的.prototype属性,并用第一个调用b的方法覆盖每个方法

甲级{ b{console.logb} c{ console.logc } d{ console.logd } } 对于Object.getOwnPropertyNamesa.prototype的常数n{ 常数f=a.原型[n]; 如果f的类型===函数&&n!==b{ a、 原型[n]=函数…参数{ 这是b; 返回f.applythis,args; } } } var aa=新的a; aa.c; aa.d ; 您可以遍历a的.prototype属性,并用第一个调用b的方法覆盖每个方法

甲级{ b{console.logb} c{ console.logc } d{ console.logd } } 对于Object.getOwnPropertyNamesa.prototype的常数n{ 常数f=a.原型[n]; 如果f的类型===函数&&n!==b{ a、 原型[n]=函数…参数{ 这是b; 返回f.applythis,args; } } } var aa=新的a; aa.c;
aa.d ; 您可以通过从截取名称查找并测试它们是否为函数的构造函数返回来实现这一点。如果是,请拨打b,除非您实际拨打了b:

甲级{ 建造师{ 常量处理程序={ gettarget、propKey、receiver{ const targetValue=Reflect.gettarget,propKey,receiver; 如果targetValue的类型=='函数'{ 返回函数…args{ //不要递归地调用b 如果propKey!=='b'目标.b return targetValue.applythis,args;//调用原始函数 } }否则{ 返回目标值; } } }; 返回新的Proxythis,handler; } b{ console.log'b called' } 汽车{ 使用,arg调用console.logc } d{ 调用console.logd } } 让实例=新的 切洛 实例d instance.b//只调用一次 //对于事后设置的方法仍然有效: a、 prototype.g=函数{ 调用了console.logg }
instance.g//仍然调用b您可以通过从a的构造函数返回a来执行此操作,该构造函数拦截名称查找并测试它们是否为函数。如果是,请拨打b,除非您实际拨打了b:

甲级{ 建造师{ 常量处理程序={ gettarget、propKey、receiver{ const targetValue=Reflect.gettarget,propKey,receiver; 如果targetValue的类型=='函数'{ 返回函数…args{ //不要递归地调用b 如果propKey!=='b'目标.b return targetValue.applythis,args;//调用原始函数 } }否则{ 返回目标值; } } }; 返回新的Proxythis,handler; } b{ console.log'b called' } 汽车{ 使用,arg调用console.logc } d{ 调用console.logd } } 让实例=新的 切洛 实例d instance.b//只调用一次 //对于事后设置的方法仍然有效: a、 prototype.g=函数{ 调用了console.logg }
instance.g//仍然调用您需要的bw。请清楚地解释一下这样做的目的是什么?在每个方法中写b是非常麻烦的。你需要什么。请清楚地解释一下这样做的目的是什么?在每个方法中写b是非常麻烦的。