我在 js 中有几个函数(例如这里的第二个代码示例(moveLeft))部分使用相同的代码部分(prepareMove)。(如果我只是在 moveLeft 中复制 prepareMove,代码就可以正常工作)
我想要发生的事情:事件发生-> prepareMove 启动-> moveLeft 启动(在访问 prepareMove 函数范围时)
我想简单地在 moveLeft 中调用 prepareMove 会导致一些范围问题,因为 moveLeft 无法检索在 prepareMove 中分配的值。
我该如何解决这个范围问题?有没有类似 django 的 block.super 我可以使用的东西(~将父容器中的代码传递给子容器并执行两者)?在 JavaScript 中解决这个问题的正确方法是什么?
function prepareMove() {
var getCurrent = ptPageXYZarray.filter( function (el) {
return el.isCurrent === true;
})[0];
var currentX = getCurrent.x,
currentY = getCurrent.y,
currentZ = getCurrent.z,
currentYmax = getCurrent.yMax,
currentZmax = getCurrent.zMax;
var newCurrent = function (a,b,c) {
newCurrent = ptPageXYZarray.filter(function(obj) {
return obj.x == a && obj.y == b && obj.z == c;
});
return newCurrent;
};
var outAnimation = function (outAnimationClass) {
getCurrent.ptPageObj.className += ' ' + outAnimationClass;
function removeOutAnimation() {
removeClass(getCurrent.ptPageObj, outAnimationClass);
}
setTimeout(removeOutAnimation,700);
};
...
}
还有第二个功能
function moveLeft() {
prepareMove(); //scope issues here?
if (currentZ === 0 && currentY !== 0) {
newCurrent(currentX,currentY -1,currentZ);
outAnimationClass = "mm-page-visible mm-page-moveToRightFade";
outAnimation(outAnimationClass);
swapCurrentEls();
inAnimationClass = "mm-page-visible mm-page-moveFromLeft";
inAnimation(inAnimationClass);
} else
...
};
在事件中我启动 moveLeft 函数
moveLeft();
正在进行的工作(使用箭头):http ://www.mymlyn.com//page-templates/css-transitions-keyboard/
位桶:[https://bitbucket.org/mymlyn/mymlyn.com/overview][2]