如何在此类函数中操作变量?

时间:2019-02-21 01:09:15

标签: javascript

<!DOCTYPE html>
<html>
<body>
<button onclick='new a().add()'>add</button>
<script>
function a() {
	this.count = 0;
	this.add = function() {
		count++;
	}
}
</script>
</body>
</html>

在此演示中,我想单击添加按钮,然后将计数加一。但是,当我单击添加按钮时,出现错误

Uncaught ReferenceError: count is not defined
    at add (test.html:9)
    at HTMLButtonElement.onclick (test.html:4)

所以我想问一下这个演示中的计数加一吗?

4 个答案:

答案 0 :(得分:3)

您需要增加this.count而不是countthis.count引用对象的属性(因为this是对象的上下文),其中count引用变量。

var obj = new a()

function a() {
	this.count = 0;
	this.add = function() {
	  this.count++;
	  console.log(this.count)
	}
}
<button onclick='obj.add()'>add</button>

另外,请分别初始化对象,以便每当按下button时,同一对象(而不是另一个对象)中的计数都会增加。

答案 1 :(得分:2)

每次单击都会创建一个新对象,在新对象上调用add方法,并增加新对象的数量

答案 2 :(得分:1)

<!DOCTYPE html>
<html>
  <body>
    <button onclick="new a().add()">add</button>
    <script>
      let count = (this.count = 0);
      function a() {
        this.add = function() {
          count += 1;
          console.log(count);
        };
      }
    </script>
  </body>
</html>

答案 3 :(得分:0)

您需要执行this.count++,而不是count++

var myInstance = new a();

function a() {
  this.count = 0;
  this.add = function() {
    this.count++;
    console.log(this.count);
  }
}
<button onclick='myInstance.add()'>add</button>