我正在創建一個相當簡單的Point2D數據結構,我將來可以繼承並說出一個Point3D,而且我已經遵循了所有的指南和類似的問題,但沒有看到幫助解決我的問題。Javascript Prototype:Replacement vs Addition
我定義的Point2D如下:
function Point2D (px, py)
{
this.x = px;
this.y = py;
Point2D.prototype =
{
constructor: Point2D,
move:function (mx, my)
{
this.x = mx;
this.y = my;
},
translate:function (dx, dy)
{
this.x += dx;
this.y += dy;
}
};
};
我實例化對象如下:
var p2d1 = new Point2D(2,3);
然後我調用的方法之一如下:
p2d1.move(1,2);
其結果是:
TypeError: Object #<Point2D> has no method 'move'
我不知道爲什麼我的方法沒有解決。
我已經搞砸了很長一段時間,發現我可以用這種方式聲明Point2D方法,他們會工作。
Point2D.prototype.move = function() {};
任何人都可以解釋爲什麼他們替換整個樣機並不工作,但添加的功能,以現有的原型確實工作的第一個樣式?
您絕對需要在構造函數外部放置原型分配。 – Bergi
Bergi說什麼,這裏是一個小提琴:http://jsfiddle.net/m7Jqs/ –
達恩 - 它...我設法在我的搜索中錯過了這個問題。 – Austin