我正在学习 JavaScript,来自 Ruby,也用 C 做过一些事情。我阅读的一个例子是:
function letCounter() {
let counter = 0;
return () => ++counter;
}
并与
function thisCounter() {
this._count = 0;
}
thisCounter.prototype.fire = function() {
this._count ++;
return this._count;
}
在第一个示例中,无法在 letCounter 实例上访问计数:
let let_counter_ins = letCounter();
let_counter_ins.counter // <- undefined
而在第二个中,计数,〜我认为〜,是函数本身所有实例的属性吗?
let this_counter_ins = new thisCounter();
this_counter_ins.count // <- 0
似乎 JavaScript 中的函数可以具有“状态”(调用console.log(let_counter_ins())
将不断增加一个计数器,而不是从 0 开始)。而且这个“状态”,设置为与let
“状态”设置有什么不同this
?似乎两者的实例都letCounter
在thisCounter
跟踪某个计数器,但它的访问方式不同吗?试图了解使用this
vs设置函数属性之间的区别let
以及为什么其中一个可以在外部使用。