当向这样的原型(prototype)添加新函数时,您无权访问构造函数中定义的变量,因为它们超出了范围。
function Thing() {
var something = 357;
}
Thing.prototype.doSomething = function () {
// no access to something because it is out of scope
console.log(something);
};
由于在构造函数中将函数添加到原型(prototype)时使用闭包,它可以访问那里定义的变量。
function Thing() {
var something = 357;
Thing.prototype.doSomething = function () {
console.log(something);
};
}
这是访问这些变量的好方法还是有更好的模式来实现相同的目标?有什么需要注意的陷阱吗?
最佳答案
您将无法从原型(prototype)访问私有(private)变量。但是,您可以访问公共(public)变量。我发现这是一个很好的权衡:
function Thing() {
this._something = 357;
}
Thing.prototype.doSomething = function () {
console.log(this._something);
};
在属性前放置 _
的命名约定只是将其标记为私有(private)的一种非正式方式,尽管实际上并非如此。
关于javascript - 访问原型(prototype)函数中的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28400402/