這兩個對象的構造有什麼區別 - 除了成員變量的隱私?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