1

我正在尝试制作一个小形状辅助对象来帮助我在 html 5 画布上绘制形状。到目前为止,我有;

var Shape = function (config) {

    this.initialize(config);
};

var proto = Shape.prototype;

proto.initialize = function (config) {

    this.x = config.x || 0;
    this.y = config.y || 0;
    this.width = config.width || 0;
    this.height = config.height || 0;
    this.color = config.color || false;
};

/*
    Circle
*/

var Circle = function (config) {

    this.initialize(config);
};

proto = Circle.prototype;

proto = new Shape();

但这似乎不起作用!当我打电话创建一个像这样的新圈子时;

var s1 = new Circle({x: 10, y: 10, width: 10, height: 10, color: "red"});

如何创建一个基类Shape来帮助设置其他形状并分配形状应具有的一些常见属性,例如,CircleRect

我正在尝试学习 javascript,所以如果代码有问题,请解释为什么以及如何改进它,

谢谢。

4

2 回答 2

3

proto = new Shape();

这将分配proto变量以引用新Shape实例。
它不影响Circle.prototype该变量之前碰巧引用的 。


请注意,您正在运行Shape()构造函数来初始化 Circle 原型,这可能不是一个好主意。
相反,你可以写

Circle.prototype = Object.create(Shape.prototype);

此代码将创建一个继承的新对象Shape.prototype,而不运行其构造函数。

于 2013-04-08T00:15:32.590 回答
0

更改此行:

proto = Circle.prototype;

proto = new Shape();

和:

Circle.prototype = new Shape();
于 2013-04-08T00:17:49.293 回答