有很多解决方案来检查/访问一个对象文字,给出一串点符号,但我需要做的是根据点符号字符串设置一个对象文字.这是非常技术性的,为什么我需要这样做,如果不可行,我会提出一个不同的解决方案.
这是我想做的事情:
var obj = {
'a': 1,
'b': 2,
'c': {
'nest': true
}
};
Run Code Online (Sandbox Code Playgroud)
我想要一个可以像这样工作的函数:
setDepth(obj, 'c.nest', false);
Run Code Online (Sandbox Code Playgroud)
这会改变对象:
var obj = {
'a': 1,
'b': 2,
'c': {
'nest': false
}
};
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一个小时,但还没有找到一个好的解决方案.另一个帮助将非常感谢!
我正在编写一个我需要构造一个未知长度的嵌套回调函数的情况.它是创建一个有序的动画队列,以便在一个未知的位置上移动一个元素.
例如,输出看起来像这样,X'完整'回调嵌套在里面:
$('#element').animate(css, { complete: function () {
$('#element').animate(css, { complete: function () {
// more nested calls inside
}
});
Run Code Online (Sandbox Code Playgroud)
现在我将这些函数生成为一个字符串,然后一旦完成,将它提供给新的Function():
myFunc = new Function(generatedFuncString);
Run Code Online (Sandbox Code Playgroud)
内容是可信的,但仍然使用eval(),这会产生负面的性能影响.我只是想知道是否还有其他/更好的方法?
编辑:我这样做的原因是因为我有一组非常复杂的动画要执行并且在jQuery动画队列之外工作.如果有人有更好的建议如何完成这样的情况会有所帮助......
想象一下棒球钻石,1号赛跑者(A)和3号赛跑者(B).在一个动画包中,我想要将跑步者A设为第3位(中间第2位停止,2位前进),以及跑步者B至HOME(1次前进).
我必须用'queue:false'开始初始进攻,以便跑步者A和B同时移动到他们的第一个基地(跑者A到第2,跑步者B到家).
当Runner A完成移动到2nd时,我想将他移动到3rd(因此用编程方式构建一个带嵌套回调的animate()调用,以确保保留此顺序).
我通过字符串构造函数的原因是因为我知道最内部回调将是什么,然后从那里递归地构造一个或多个外部回调.我无法通过将函数作为对象并保持所有引用的方式来找到一种方法.
请记住,这是一个简单的例子.想象一下基地装载的情况,我需要制作一个大满贯的动画(所有4个跑步者围绕所有基地,来自家的跑步者需要在跑回家之前停3站).等等