这两个对象的构造有什么区别 - 除了成员变量的隐私?Javascript对象构造:有什么区别?
function A() { this.a = 99; }
A.prototype.setA = function(newVal) { this.a = newVal; }
A.prototype.getA = function({ return this.a; }
这:
function A() {
var a = 99;
return {
setA: function(newVal) { a=newVal; }
getA: function() { return a; }
}
}
我不感兴趣的成员变量这么多的功能被定义方式的隐私。
我是否认为在第二个版本中,通过新的A()创建的所有对象都会获得已定义函数的副本,在第一个版本中,所有对已定义函数的调用将转到唯一原型对象(对于A对象)。这是正确的吗?
如果是这样,版本2有任何性能成本?
另外,一种方式是否优于另一种 - 或者还有更好的方法吗?
非常感谢
安装者和吸气者是一个可怕的想法。停止将Java代码移植到JavaScript。 – Raynos
@Raynos,不太可怕,不会被纳入ES5。 – davin
@达文这是不同的。这些是本地的getter/setter(他们仍然是邪恶的)。像'setA'和'getA'这样的模拟器是非常愚蠢的。 Native Native getter/setters应该只用于做真正聪明的事情,而不是每天都在使用代码 – Raynos