我试图找到一种方法来避免在类的原型上创建大量传递方法。我有一个 ProgressBar 类,它有很多实例方法。我想创建一个新类(在我的代码示例中称为 ComposedProgressBar),它“有一个”progressBar 实例,并且不从 ProgressBar 继承。
为了从客户端代码访问progressBar 的实例方法,通常会创建一系列传递函数。如:
ComposedProgressBar.prototype.setWidth = function (width) {
this.progressBar.setWidth(width);
};
但是,我试图避免这种情况。
我可以通过将以下内容添加到 ComposedProgressBar 的构造函数来访问 progressBar 的特权方法:
ProgressBar.call(this);
但是,这不适合我想要实现的。我需要访问已添加到 ProgressBar 原型中的方法。
下面是基于我目前正在使用的示例代码。我已经包含了高度设置器和获取器,只是为了说明使用 ProgressBar.call(this) 对他们有用。
有可能做我想要实现的目标吗?
function ProgressBar() {
"use strict";
this.width = 0;
this.height = 0;
this.setHeight = function (height) {
this.height = height;
};
this.getHeight = function () {
return this.height;
};
}
ProgressBar.prototype.setWidth = function (width) {
"use strict";
this.width = width;
};
ProgressBar.prototype.getWidth = function () {
"use strict";
return this.width;
};
function ComposedProgressBar() {
"use strict";
this.progressBar = new ProgressBar();
ProgressBar.call(this);
}
var composedProgressBar = new ComposedProgressBar();
composedProgressBar.setHeight(300);
console.log(composedProgressBar.getHeight());
composedProgressBar.setWidth(300);
console.log(composedProgressBar.getWidth());