OOP Javascript - 是否需要“获取财产”方法?

时间:2013-06-18 15:46:18

标签: javascript oop prototype

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

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

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

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

由于

3 个答案:

答案 0 :(得分:3)

使用该函数稍微慢一点,但允许您在将来更改其工作方式(或者在继承此函数的另一个对象类型中更改)。

答案 1 :(得分:1)

取决于name是对象还是基元(boolean,string,int)。

如果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按值传递基元,但是通过引用传递对象。

答案 2 :(得分:0)

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