gpt4 book ai didi

javascript - for循环,元素绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 03:20:34 25 4
gpt4 key购买 nike

我有一个关于 foo 循环的问题。为什么我的输出每次都是“C”?

function Dummy(){}

Dummy.prototype.a = function(){ console.log("Hello from A"); };
Dummy.prototype.b = function(){ console.log("Hello from B"); };
Dummy.prototype.c = function(){ console.log("Hello from C"); };

function hooks(obj){
for(method in obj){
original = obj[method];
obj[method] = function(){
console.log("Overrid %s", method);
original();
};
}
}

var instance = new Dummy();
hooks(instance);

instance.a();
instance.b();
instance.c();

我想创建一个可 Hook 的中间件

最佳答案

解决方案代码如下:原因是,当您将函数分配给“原始”变量时,它将始终引用最后一个赋值,因为“原始”变量是在全局范围内声明的。

function Dummy(){}

Dummy.prototype.a = function(){ console.log("Hello from A"); };
Dummy.prototype.b = function(){ console.log("Hello from B"); };
Dummy.prototype.c = function(){ console.log("Hello from C"); };

function hooks(obj){
for(method in obj){
(function(original, method) {

obj[method] = function(){
console.log("Overrid %s", method);
original();
};
})(obj[method], method)
}
}

var instance = new Dummy();
hooks(instance);

instance.a();
instance.b();
instance.c();

关于javascript - for循环,元素绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46592655/

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