【问题标题】: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 中实现私有变量的方式。