在我们的代码库中,我发现许多开发人员使用下划线作为成员变量的首字母来阻止公共使用。通常,更好的做法是声明一个对象的方法可以访问的局部变量,但在我们的例子中,这似乎是不可能的,因为所有方法都是在原型上定义的。这是一个例子。
MyContrivedWidget = function(container) {
this._container = jQuery(container);
}
MyContrivedWidget.prototype = {
draw: function() {
var link = jQuery(document.createElement('a'))
.html('some contrived text')
.attr('href', '#')
.appendTo(this._container);
}
}
我们使用原型对象有多种原因,但最引人注目的可能是使用原型链可以轻松继承和覆盖方法。这对我们有好处,因为我们在一个平台上有多个产品,可能希望在覆盖特定功能的同时重用大量 JavaScript。
所以我的问题是,我们如何才能获得原型链的所有好处而不让应该私有的变量可以公开访问?