jquery - 在 AS3 和其他基于类的语言中编写 jQuery 风格的函数链

标签 jquery flash oop coding-style chaining

这不是我遇到的具体问题,更多的是我可以做出的选择,但我确实相信这个问题与 SO 相关,因为可能有一个“正确的”OO 答案,以及性能 yield /损失做这个。我正在使用 AS3,但我相信这个问题与其他基于类/oo 的语言相关。

我试图找到一种方法,为具有不同参数的类提供 Java 风格的多个构造函数(这是另一个故事),但这让我思考 jQuery,以及它如何通过让函数在可能的情况下返回来链接函数他们被调用的对象。

它并不总是能用 jQuery 生成最简洁的代码,我想这是与经典方法不同的做法,但我想知道对于这种方法是否有什么可说的:

//execute chains of methods on creation, as each returns its parent class (person)
var person:Person = new Person().male('a male', 25).wakeUp().lookAround();

//Or later
person.getUp().rubEyes();

...以及让成员函数全部返回通常不需要的对象是否代表任何重大浪费/性能问题?

这似乎是保存代码并以更易读的方式表示函数序列的好方法,我想知道是否有人可以提供帮助。

提前致谢

最佳答案

是的,person.getUp().rubEyes() 有一些话要说:从语义上来说它看起来更好。仅此而已。

new Person().male('amale', 25) 是一个完全不同的情况。 Male 不是像 getUp 这样的动词。我更喜欢:new Person({ sex: 'male',age: 25})

当不使用返回的对象时,性能是否会受到重大影响?不会。首先,大多数 (jit) 编译器都足够聪明,能够发现返回的对象从未被使用过,因此根本不会执行这些指令。这是一种称为死代码消除的优化策略。其次,即使编译器不会执行此优化,那么我们仍然在谈论一些微不足道的时钟周期。没什么你应该担心的。一般来说,我建议您根本不要担心此类性能问题。最好将优化工作集中在编译器无法帮助您的代码部分(即设计、算法等)。

享受链接的乐趣!

关于jquery - 在 AS3 和其他基于类的语言中编写 jQuery 风格的函数链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14792893/

相关文章:

javascript - 使用slideUp/slideDown 从最后一张幻灯片到第一张幻灯片

javascript - jQuery animate,在动画完成之前忽略额外的点击

PHP OOP 困境 : how to keep a database connection 'within' a class object?

PHP:如何获取实现特定接口(interface)的类列表?

javascript - jquery .then 不会抛出错误

jquery - 点击加载更多目标接下来的三个 sibling 然后接下来的三个 sibling ,不使用循环

android - 在 Nexus 7 android 的 android webview 中播放内部存储中的 .SWF 文件

javascript - 如何使用 javascript 防止 chrome 的 flash 音频模式

java - Java KeyEvent 是否适用于 Flash 游戏

c++ - 好友功能的可访问性