首页 > 解决方案 > 原型和关闭

问题描述

我正在尝试解决一些关于原型(可能还有闭包)的 JavaScript 问题。我对这个概念很陌生。

我需要创建一个 MyNumber 原型,然后添加增量函数,该函数将返回一个递增 1 的数字。在这里,我将创建原型的多个实例,每个实例将分别跟踪自己的值。

这是我的逻辑错误代码:

function MyNumber(num) {
  this.num = num;
}

MyNumber.prototype.increment = function() {
   return function() {
     ++this.num
   }
}

在这个例子之后,我需要创建一个时钟原型,它每秒递增一。

标签: javascriptprototype

解决方案


我在这里看到的主要问题是,您的increment方法不是简单地递增this.num,而是返回一个function递增的this.num。在下面的示例中,我将其重写为简单地进行自增。同样在示例中,我们确保使用newoperator创建新实例,以便 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


推荐阅读