它不会对你特别有用。
var foo = new Bar();
var foo1 = new Bar();
var foo2 = new Bar();
每个都将具有完全相同的值.getBar()
.prototype
根本无法访问私有变量。
您所拥有的实际上更像是静态属性,而不是实例的私有属性。
如果您想这样做,您需要创建一个公共访问器,然后您可以从原型(或代码的任何其他部分,因为它是公共的)调用它。
function Wallet (amount) {
var balance = amount; // this will be unique to each wallet
this.getBalance = function () { return balance; };
this.addToBalance = function (amount) { balance += amount; };
// these ***NEED*** to be in the constructor to have access to balance
}
Wallet.prototype.addFunds = function (amount) { this.addToBalance(amount); };
Wallet.prototype.checkFunds = function () { return this.getBalance(); };
var wallet = new Wallet(371.00);
wallet.addFunds(2.00);
现在您的原型可以访问公共方法,而这些方法本身可以访问私有变量。...但是当您可以使用实例的公共方法时(无论如何我在原型中正在做的),
为什么还要经历那个麻烦,把它放在原型中 ?
寓意是,如果一个对象只有面向公众的数据,那么请随意将所有方法移至原型。
但是,如果在任何对象中都存在任何私有状态,那么任何应该可以访问该状态的方法都需要在构造函数中,并且任何只使用公共状态的方法(即:调用 with this
)可以在原型中。