2

Given a very simple js object constructor and its prototype...

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

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

Now, in myMethod, is there any difference between using "this.getName" and "this.name"?

Thanks

4

3 回答 3

3

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

于 2013-06-18T15:52:47.440 回答
1

取决于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 通过值传递原语,但通过引用传递对象。

于 2013-06-18T15:54:50.527 回答
0

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

于 2013-06-18T15:48:23.537 回答