javascript - 在没有 "this"的情况下访问 JavaScript 中对象中的变量

标签 javascript variables object this

  <HTML>
    <HEAD>
      <SCRIPT LANGUAGE="JavaScript">
        function Peon(number) {
            this.number = number;

            this.inc = function() {
                number=number+1;
            };

            return true;
        }
        var p=new Peon(10);

        function returnNumber() {
            p.inc();
            alert(p.number);
        }
      </SCRIPT>
    </HEAD>
    <BODY>

      <INPUT id="b00" TYPE="button" Value="Click" onClick="returnNumber()">

    </BODY>
  </HTML>

此代码未按预期工作。有没有办法让它工作而无需编写

this.number=this.number+1;

这里这是一个微不足道的选择,但在更大的代码中,没有 this.* 会使其更具可读性。可能吗?

最佳答案

您可以将number设置为“私有(private)”,但是您需要一个getter:

    function Peon(number) {
        var number = number;

        // increment
        this.inc = function() {
            number++;
        };

        // a simple getter
        this.getNumber = function() {
            return number;
        }
    }
    var p = new Peon(10);
    p.inc();
    alert(p.getNumber());

您应该阅读 Douglas Crockfords 的“The Good Parts”,了解有关如何使用此模式的更多信息,Google Books 提供(有限)预览。 .

此外,您不需要从构造函数返回某些内容,您的 return true 是多余的。

关于javascript - 在没有 "this"的情况下访问 JavaScript 中对象中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4258863/

相关文章:

javascript - 检测 VSCode activeTextEditor 的文本输入

javascript - node.js require 在脚本中不起作用?

php - 在 INI 文件中使用关键字作为变量名

php 请求变量分配 $_GEt

java - 将参数传递给对象数组

javascript - 如何为 taffyDB 查询动态创建此对象

javascript - 如何让我的模态工作?

c++ - 如何引用连续的组件(button1、button2 等)?

c++ - 你怎么知道当前对象是什么?

javascript - 使用 Web 应用程序实现数据绑定(bind)的最佳方法是什么?