小编mat*_*lar的帖子

通过点符号字符串在对象文字中设置深度?

有很多解决方案来检查/访问一个对象文字,给出一串点符号,但我需要做的是根据点符号字符串设置一个对象文字.这是非常技术性的,为什么我需要这样做,如果不可行,我会提出一个不同的解决方案.

这是我想做的事情:

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)

我已经尝试了一个小时,但还没有找到一个好的解决方案.另一个帮助将非常感谢!

javascript

3
推荐指数
1
解决办法
1825
查看次数

是否可以在不使用eval()的情况下以编程方式从字符串或其他技术中定义函数?

我正在编写一个我需要构造一个未知长度的嵌套回调函数的情况.它是创建一个有序的动画队列,以便在一个未知的位置上移动一个元素.

例如,输出看起来像这样,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站).等等

javascript jquery

1
推荐指数
1
解决办法
387
查看次数

标签 统计

javascript ×2

jquery ×1