当前位置:嗨网首页>书籍在线阅读

23-讨论

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.5.3 讨论

据报道,作曲家伊戈尔·斯特拉文斯基曾经说过:“好的作曲家借用别人的想法,伟大的音乐家则将其窃为己有。”这句话明显剽窃了T.S. 艾略特的名言,艾略特曾经写过:“不朽的诗人模仿;成熟的诗人剽窃。”

好主意来自许多地方,其他JavaScript程序库充满了好的代码和思路。如果其他开放源码程序库中有你可以使用的代码,或者可以转移到jQuery中的代码,你完全可以使用它们——但是你要尊重其他作者的版权和许可。

注意

关于开放源码和免费软件的信息可以参加如下网站:

本例中的实现非常简单,缺少的只是一个“radio类”方法的思路,在这种情况下你甚至不需要实际的代码。尽管不是必需的,但是对思路的来源表示感谢还是一个很有礼貌的做法。

不管思路是来源于其他地方还是你自己的思考,在许多情况下,你都可以花费一行或者少数几行代码编写有用的jQuery插件。

什么是jQuery.fn?为什么jQuery插件要使用它? jQuery.fnjQuery.prototype 引用同一个对象。当在 jQuery.fn 对象中添加一个函数时,实际上就把函数添加到 jQuery.prototype 中。 当用 jQuery()$() 创建一个jQuery对象时,实际上调用的是 new jQuery() 。(jQuery代码自动为你添加 new 操作。)和其他JavaScript构造器一样, jQuery.prototype 为每个 new jQuery() 调用返回的对象提供方法和默认属性。所以,当编写 jQuery.fn 插件时,实际上进行的是传统的面向对象JavaScript编程,用构造器的原型向对象添加一个方法。 那么为什么存在jQuery?而不像其他面向对象JavaScript代码那样使用 jQuery.prototype? 这并不只是为了少输入几个字符。 jQuery最初的版本(在1.0发行之前很长的时间)不使用JavaScript的 prototype 功能为jQuery对象提供方法。它通过循环读取对象将 jQuery.fn (后称 $.fn )中的每个属性和方法的引用复制到jQuery对象中。 因为对象中可能有数百个方法,每次调用 $() 都进行复制可能相当缓慢。所以,把这段代码改成使用JavaScript原型,消除了所有复制工作。为了避免破坏已经使用 $.fn 的插件,将它作为 $.prototype 的别名: $.fn = $.prototype ; 这就是为什么jQuery.fn到今天还存在的原因——插件早在2006年初期就使用了$.fn!