【问题标题】:js Return multi methods for Plugin .apply()js 返回插件的多种方法 .apply()
【发布时间】:2012-12-17 12:05:26
【问题描述】:

我正在尝试为插件返回多方法。

结构如下。如果我应用不止一种方法,例如:

return ob[a].apply(), ob[b].apply();

将返回错误。请指教!!非常感谢!!

ob = {
 a: function(){ return{ A: function(){   } }},
 b: function(){ return{ B: function(){   } }},

}

$.fn.plugin = function(){
  return ob[a].apply();
}

$(el).plugin().A()

我想要,返回 2 个方法 a 和 b 然后我可以使用类似插件

  $(el).plugin().A()
  $(el).plugin().B()

这可能吗?

【问题讨论】:

  • 约定是 jquery 插件应该返回它们运行的​​对象,以便您可以链接它们。还有,你的目标是什么?您的应用语法错误。您是否要获取绑定到插件 this 的 A 和 B?
  • 不,我想要一种可以像 jQuery 一样应用 A 或 B 的方法 || $(el).css().append() 或 $(el).append().css()
  • 如果 ia 在 a 中返回 b,这将像 $(el).plugin().A().B() 一样工作,但不能更改为 $(el)。插件().B().A()

标签: javascript plugins methods return return-value


【解决方案1】:

在 javascript 中,您只能从函数中返回一个对象。 所以,return ob[a].apply(), ob[b].apply(); 将不起作用。

您可以返回包含这些值的对象。您可能对How can I merge properties of two JavaScript objects dynamically? 感兴趣。

动态组合对象的替代方法是稍微调整代码的工作方式:

ob = {
    a: function(){ return function(){ return 'a';  } },
    b: function(){ return function(){ return 'b';  } },
}     
 function myPlugin() {
     var rv = new Object();
     rv['a'] = ob['a'].apply();
     rv['b'] = ob['b'].apply();
     return rv;
 }
var o = myPlugin();
alert(o.a());
alert(o.b());

【讨论】:

  • 我阅读了给出的链接,并尝试了您发布的方式。现在没有错误,但 $(el).plugin().B() 或 .A() 都不起作用。
  • 好像 rv['a'] = ob['a'].apply();只会将函数从 ob['a'] 赋予 rv['a'] 但不适用于编写插件的方式。也许 return 不能是一个目标,而是一个函数。请帮忙给一个返回多功能的方法。
猜你喜欢
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
相关资源
最近更新 更多