【问题标题】:OOP Javascript - Is "get property" method necessary?OOP Javascript - 是否需要“获取属性”方法?
【发布时间】:2013-06-18 15:46:18
【问题描述】:

给定一个非常简单的 js 对象构造函数及其原型...

    function MyTest(name)
    {
        this.name = name;
    }

    MyTest.prototype =
    {
        getName: function()
        {
            var myName = this.name;
            return myName;
        },
        myMethod: function()
        {
            //
        }
    }

现在,在 myMethod 中,使用“this.getName”和“this.name”有什么区别吗?

谢谢

【问题讨论】:

    标签: javascript oop prototype


    【解决方案1】:

    使用该函数会稍微慢一些,但允许您在未来更改它的工作方式(或在继承自该对象类型的另一个对象类型中这样做)。

    【讨论】:

      【解决方案2】:

      取决于name 是对象还是原语(布尔值、字符串、整数)。

      如果name 是原始/字符串,并且您使用this.getName(),您将无法通过这样做修改this.name 的值(假设this.name = "Billy")

      this.getName() = "213" //this.name still has a value of "Billy"
      

      如果name 是一个对象this.name = { firstName: "Billy", lastName: "Bob"};

      this.getName().firstName = "Willy"; //this.name now has a value of { firstName: "Willy", lastName: "Bob"}  
      

      这是由于 JavaScript 通过值传递原语,但通过引用传递对象。

      【讨论】:

        【解决方案3】:

        没有区别。如果你想要的话,这不是你在 JS 中实现私有变量的方式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-20
          • 2011-08-20
          • 1970-01-01
          • 2011-08-16
          • 2013-10-15
          • 1970-01-01
          • 2016-10-17
          • 1970-01-01
          相关资源
          最近更新 更多