所以我想我在这里疯了。我试图在我的代码中使用原型,所以我将有一个Layer对象,它将具有一个具有_newFigure函数的Figure对象。
Layer = function(){}
Layer.prototype.figure = function(){}
Layer.prototype.figure.prototype._newFigure = function(){
//(Creates new Figure)
}
我在伪代码中的期望:
[LayerObject]{
figure:{
_newFigure:function(){
//(Creates new Figure)
}
}
}
现在,对我来说,这将是合乎逻辑的事情,但由于某种原因,它确实起作用。 你现在我怎么能做到这一点?请记住,出于性能原因,我使用原型。
- 提前致谢 -
UPDATE ------------------------------------------- --------------------------------------------
正如尼克所说"为什么Layer需要在其原型上有一个数字?看起来Layer和Figure是我们独立的实体,而Layer可以附加一个Figure实例。只是一个想法:)"
所以,我已经更新了代码(现在正在工作)
Layer = function(){
this.figure = new figureHandler(this);
}
function figureHandler(layer){
this.layer = layer;
}
figureHandler.prototype._newFigure = function(){
//(Creates new Figure)
}
- 看到你!谢谢你的帮助:) -
答案 0 :(得分:1)
以下内容适用于您?
Figure = function() {};
Layer = function() {};
Layer.prototype.figure = function() {
return new Figure();
};
当我layer.figure._newFigure
为您创建新的图形对象时,为什么您需要layer.figure
这样的界面,这有点让我感到困惑。也许你的用例对我来说不够清楚。
编辑:根据对原始回复的评论,我认为你的意思是:
Figure = function(layer) {
this.layer = layer;
};
Layer = function() {};
Layer.prototype.figure = function() {
return new Figure(this);
};
答案 1 :(得分:0)
我想你可能正在寻找这样的东西:
图有一个Layer实例,一个Layer实例有多个数字。图层可能有一个工厂,可以创建具有当前图层实例的图形:
Layer = function Layer(){
this.figures = [];
};
Layer.prototype.addFigure = function addFigure(arg){
arg = arg || {};
arg.layer = this;
this.figures.push(new Figure(arg));
return this;//now you can stack functions
}
Figure = function Figure(arg){
arg = arg || {};
//layer is not optional
this.layer = arg.layer
|| (function(){
throw new Error('Cannot create figure without layer');
}());
this.shape = arg.shape || 'square';
}
var l = new Layer();
l.addFigure({shape:'round'})//stacking next addFigure on next line
.addFigure();//defaults to square
console.log(l.figures);
有关构造函数和原型的更多信息:https://stackoverflow.com/a/16063711/1641941