我的工厂功能/ mixin粘贴在下面工作,但我无法从外部访问任何参数。
我试图像这样返回xPosition
,yPosition
,但它不起作用。
return Object.assign({},
attacker(state),
renderer(state),
xPosition,
yPosition
);
我希望能够移动僵尸,而无需编写对象中包含的特殊方法。
我想让工厂尽可能接近现在的样子。
整个过程都在ES6模块中,所以无论如何它都是私有的。
谢谢!
var zombie = createZombie (100,100);
var renderer = function renderer(state) {
return {
render() {
...
}
};
};
var createZombie = function createZombie(xPosition, yPosition) {
var state = {
status: 1,
width: 10,
height: 10,
xPosition,
yPosition,
angle: 0,
color: "green"
};
return Object.assign({},
attacker(state),
renderer(state),
);
};
答案 0 :(得分:0)
Object.assign
期望将对象作为其参数,因此只需将位置作为对象的一部分传递:
return Object.assign({},
attacker(state),
renderer(state),
{
xPosition,
yPosition
}
);
答案 1 :(得分:0)
return Object.assign({},
attacker(state),
renderer(state),
{
get xPosition(){ return state.xPosition;},
set xPosition(v){ return state.xPosition = v;},
get yPosition(){ return state.yPosition;},
set yPosition(v){ return state.yPosition = v;}
}
);
然而,虽然使用吸气剂和定位器是合理的,但在我看来,它的设计模式很差。也许你宁愿相信周围的人也能遵循_惯例......
return Object.assign({},
attacker(state),
renderer(state),
{ _state: state }
);