我正在为一个实验开发碰撞函数,在我的主代码中我有一个名为Platform的类,我试图用外部函数改变它的X / Y值。我知道我可以将函数放在类本身中,但我希望能够在不同的类中重用它。
示例:
function changeX(x) {
x += 20;
return x;
}
class Box {
constructor(posX) {
this.posX = posX;
};
change() {
changeX(this.posX);
}
};
const box1 = new Box(20);
var box2 = new Box(40);
console.log("Pre Function Call:");
console.log("Box 1: " + box1.posX);
console.log("Box 2: " + box2.posX);
changeX(box1.posX);
box2.change();
console.log("");
console.log("Post Function Call:")
console.log("Box 1: " + box1.posX);
console.log("Box 2: " + box2.posX);
我一直在寻找方法来做到这一点但没有出现。
答案 0 :(得分:0)
function changeX() {
this.posX += 20;
}
class Box {
constructor(posX) {
this.posX = posX;
}
};
Box.prototype.change = changeX;
const box1 = new Box(20);
var box2 = new Box(40);
console.log("Pre Function Call:");
console.log("Box 1: " + box1.posX);
console.log("Box 2: " + box2.posX);
changeX.apply(box1);
box2.change();
console.log("");
console.log("Post Function Call:")
console.log("Box 1: " + box1.posX);
console.log("Box 2: " + box2.posX);
设置Class的原型或使用apply函数
如果类的属性依赖于类,则可以使用工厂函数
function changeX(attr) {
return (function (){
this[attr] += 20;
}).bind(this)
}
Box.prototype.change = changeX('posX');