计数器对象
重要性:5
这里使用构造函数创建了一个计数器对象。
它会工作吗?它会显示什么?
function Counter() {
let count = 0;
this.up = function() {
return ++count;
};
this.down = function() {
return --count;
};
}
let counter = new Counter();
alert( counter.up() ); // ?
alert( counter.up() ); // ?
alert( counter.down() ); // ?
当然它会正常工作。
两个嵌套函数都在同一个外部词法环境中创建,因此它们共享对同一个 count
变量的访问权限。
function Counter() {
let count = 0;
this.up = function() {
return ++count;
};
this.down = function() {
return --count;
};
}
let counter = new Counter();
alert( counter.up() ); // 1
alert( counter.up() ); // 2
alert( counter.down() ); // 1