给出一个非常简单的js对象构造函数及其原型......
function MyTest(name)
{
this.name = name;
}
MyTest.prototype =
{
getName: function()
{
var myName = this.name;
return myName;
},
myMethod: function()
{
//
}
}
现在,在myMethod中,使用“this.getName”和“this.name”之间有什么区别吗?
由于
答案 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中实现私有变量的方式。