我如何拒绝使用flash/flex公开的javascript函数?
我们开发了一个flex组件,现在已经被几个web应用程序使用。 我们发现一些回调是旧的,并且它们有不好的参数。 例如,当它们用于设置某些参数时,它们使用一个对象,而当它们获得相同的参数时,它们使用另一个对象。 我们希望使这些函数在设置和获取参数时保持一致。 所以我们想开始开发新的getter和setter,使用新的名称和正确的参数。 无论如何,由于该组件被许多其他应用程序使用,我们无法重命名回调,也无法更改其实现,因此其他web应用程序可能会出现问题。 因此,我们想知道是否有某种方法可以使flash公开回调不受欢迎,这样使用这些方法的人将看到一些警告,并开始用未受欢迎的版本进行替换。我如何拒绝使用flash/flex公开的javascript函数?,javascript,flash,apache-flex,actionscript,externalinterface,Javascript,Flash,Apache Flex,Actionscript,Externalinterface,我们开发了一个flex组件,现在已经被几个web应用程序使用。 我们发现一些回调是旧的,并且它们有不好的参数。 例如,当它们用于设置某些参数时,它们使用一个对象,而当它们获得相同的参数时,它们使用另一个对象。 我们希望使这些函数在设置和获取参数时保持一致。 所以我们想开始开发新的getter和setter,使用新的名称和正确的参数。 无论如何,由于该组件被许多其他应用程序使用,我们无法重命名回调,也无法更改其实现,因此其他web应用程序可能会出现问题。 因此,我们想知道是否有某种方法可以使fla
提前感谢您的回答 一旦成为API,就永远是API 你不能仅仅从API中删除东西,否则当前使用这些命令的应用程序将失败。只需添加新的替换API并保留旧的API即可。在文档中声明旧的已弃用,并且有更好的命令 jQuery的
live()
和delegate()
就是一个例子,它被on()
取代。尽管已弃用,live()
和delegate()
仍然存在于1.7上,以适应旧的API,特别是那些升级了库但使用了过时的、未维护的插件的用户
你也可以这样做。您可以为旧API显示相同的接口,但在它下面,它使用了新的API实现,但稍作修改。这样,您就不会重复代码 例如,让我们以jQuery
delegate()
、live()
和on()
为例。这些不是这些方法的实际代码,但我追求的是弃用的概念(除了delegate()
、live()
和on()
)之外,我想不出其他弃用的例子)
有几件事不清楚:
[Deprecated()]
meta,然后将其删除,当然不要将其拖到主要版本的发行版中。如果您有带宽的话,最好对旧版本提供一些支持,可能还有发布补丁,但改进更为重要。某些策略可能会有所帮助。例如,如果用户接触到测试版产品,他们将更有可能更快地采用更改
如果你的受众大多是精明的/有良好的社区沟通能力,可能一个次要版本就足够了——最坏的情况是,旧的兼容版本几乎没有留下什么。同样,如果你有旧版本的补丁也不错,但是你会因为使用了错误的API而束手无策,过了一段时间,由于那个API,你的用户会认为你的应用程序是过时的垃圾,这会使他们无法使用他们更愿意更改的东西
仅保证次要版本之间的一致性非常重要。当然,如果您可以保留向后兼容的多个版本,这是一件好事,但这是一个额外的好处,而不是要求。虽然从表面上看,使用您产品的其他人可能不愿意接受更改,但另一种选择更糟糕。应该有一些合理的时间,适合您提供支持的平均应用程序生命周期。一些东西不会让一个普通的应用程序在使用之前就过时,但所有的东西都要适度。因此,我们认为除了在文档中编写之外,没有一种合适的方法来做到这一点。我将等待,看看是否有一些创造性的想法,收集自动反对意见。感谢您与jQuery进行有趣的比较!我想你可以考虑在浏览器控制台上记录一个警告,告诉那些不使用RTFM的人,这个方法现在已经被弃用。嗯,我认为你的想法很好,但是我需要这些信息,因为函数应该返回一个不同的对象,所以我不能在遗留方法中隐藏新的函数。无论如何,谢谢你的帮助!:)嗯,你部分回答了我的问题,但我认为最后你的意见是有用的。我将回答你的问题:1。我正在构建flex代码,其他人应该通过javascript API使用它。2.观众是由程序员组成的。3.应用程序的生命周期不短,到目前为止,该组件已经从2009年开始使用,无论如何,我没有制作它的初始版本,但我不得不在过去更改该组件,并开发了一些功能。
//the three have different set-ups
.live(event,callback);
.delegate(selector,event,callback);
.on(event,selector,callback);
//to avoid multiple underlying implementations
//you can "map" the old API to use the new API's implementation
//while maintaining the old interface and functionality
live = function(event,callback){
$(document).on(event,callback);
}
delegate = function(selector,event,callback){
$(this).on(event,selector,callback);
}
//the new implementation as used by on
on = function(event,selector,callback){
//implementation
}