javascript - 原型和关闭
问题描述
我正在尝试解决一些关于原型(可能还有闭包)的 JavaScript 问题。我对这个概念很陌生。
我需要创建一个 MyNumber 原型,然后添加增量函数,该函数将返回一个递增 1 的数字。在这里,我将创建原型的多个实例,每个实例将分别跟踪自己的值。
这是我的逻辑错误代码:
function MyNumber(num) {
this.num = num;
}
MyNumber.prototype.increment = function() {
return function() {
++this.num
}
}
在这个例子之后,我需要创建一个时钟原型,它每秒递增一。
解决方案
我在这里看到的主要问题是,您的increment
方法不是简单地递增this.num
,而是返回一个function
递增的this.num
。在下面的示例中,我将其重写为简单地进行自增。同样在示例中,我们确保使用new
operator创建新实例,以便 JS 引擎知道我们正在创建对象的新实例:
function MyNumber(num) {
this.num = num;
}
MyNumber.prototype.increment = function() {
++this.num;
}
let myNumA = new MyNumber(10);
let myNumB = new MyNumber(100);
console.log(myNumA.num); // 10
console.log(myNumB.num); // 100
myNumB.increment();
console.log(myNumA.num); // 10
console.log(myNumB.num); // 101
推荐阅读
- regex - 正则表达式匹配) 在某些条件下
- r - 如何在 R 中使用可配置的移动平均线进行预测
- php - 如果有带重音符号的大写字母,则 PHP 函数 substr 将整个字符串留空
- javascript - JavaScript - 在 HTML 表格中动态添加表格行
- reactjs - 保存选定的选项 React-Redux
- html - 为什么最后一行和倒数第二行之间存在空格?
- python - 尝试创建支票账户类但遇到问题
- c# - 如何在 .Net Core 中使用 File.Create Web 路径作为参数
- mysql - mysql中emp表的递归结果
- mongodb - AWS - 无法从 Lambda 连接到 Lightsail 中的 mongo