0

我有以下两个回调函数。我想知道是否可以在 clipname 和 has_clip 函数之间共享名称对象?这是将liveapi用于ableton,但我确定它只是一个通用的javascript东西。

function loadclips() {

  names = new LiveAPI(this.patcher, 1, clipname, “live_set tracks 0 clip_slots 1 clip”);
  names.property = “name”;

  slot = new LiveAPI(this.patcher, 1, has_clip, “live_set tracks 0 clip_slots 1”);
  slot.property = “has_clip”;

}

function clipname(args) {
  post(args);
}

function has_clip(args) {
  post(args);
}
4

1 回答 1

1

我认为最安全的做法是从 loadClips 返回一个对象(似乎也很明智)。确保var在新变量上使用。全局范围污染可能会引入难以发现的错误。

function loadclips() {

  var names = new LiveAPI(this.patcher, 1, clipname, “live_set tracks 0 clip_slots 1 clip”);
  names.property = “name”;

  var slot = new LiveAPI(this.patcher, 1, has_clip, “live_set tracks 0 clip_slots 1”);
  slot.property = “has_clip”;

  return {
    names: names,
    slot: slot
  }; 

}

然后将其传递给可能需要它的任何函数。

function clipname(args, namesAndSlots) {
  // namesAndSlots is available here
  post(args);
}

function has_clip(args, namesAndSlots) {
  // namesAndSlots is available here
  post(args);
}

现在您可以调用 loadClips:

var namesAndClips = loadClips(); 

var clip = clipName('a', namesAndClips); 

我认为无论如何,这更接近您的需求。

于 2013-09-25T18:12:56.297 回答