gpt4 book ai didi

javascript - 在 javascript 中捕获 "' this"

转载 作者:行者123 更新时间:2023-12-03 04:44:24 24 4
gpt4 key购买 nike

我从在线资源创建了一个链 API,我理解它,除了一件事,我将“this”存储在变量中 - 为什么?我听说它要捕获它以保护它,我不完全确定这意味着什么。为什么我试图保护“this”以及为什么我将其存储在变量中,将其存储在变量中有何作用?这如何改变“这个”?我在这里和谷歌上进行了快速搜索,但没有找到答案。谢谢

function Calc(value){
let self= this;//captures this?
self.value=value;//sets the initial value;

self.add=function(addVal){
self.value+=addVal;
return self;
}

self.sub=function(subVal){
self.value-=subVal;
return self;
}
self.mult=function(multVal){
self.value*= multVal;
return self;
}

self.div=function(subVal){
self.value/= subVal;
return self;
}
}

let cal= new Calc(10);

cal.add(2).mult(2).sub(2).div(2);

最佳答案

您并没有真正将 存储 this 到变量中,您只是存储对 this 上下文变量的引用 在一个变量中。这是很好但很重要的区别。你为什么这么做?嗯,this 是一个动态引用,它始终引用当前上下文。例如,如果您调用新函数,则会创建一个新的上下文(或更准确地说环境记录)。

因此,如果您不存储外部上下文函数 Calc 的引用,则无法在子上下文的 (add, sub, mult, div )因为每个都有它自己的 this 引用。

关于javascript - 在 javascript 中捕获 "' this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42928149/

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