关于jquery中编写插件的一些注意点分析
来源:互联网 发布:探索者软件怎么样 编辑:程序博客网 时间:2024/06/05 05:18
关于jquery中编写插件的一些注意点分析
- 分号的使用
- return的问题
- 关于this和$(this)
- 关于prototype
- $运算符的含义
- 在插件编写时的window,document相关参数
首先我们来看一段示例jquery开发插件的代码,就对这段代码进行以上问题的分析
;(function($, window, document,undefined) { //定义Beautifier的构造函数 var Beautifier = function(ele, opt) { this.$element = ele, this.defaults = { 'color': 'red', 'fontSize': '12px', 'textDecoration': 'none' }, this.options = $.extend({}, this.defaults, opt) } //定义Beautifier的方法 Beautifier.prototype = { beautify: function() { return this.$element.css({ 'color': this.options.color, 'fontSize': this.options.fontSize, 'textDecoration': this.options.textDecoration }); } } //在插件中使用Beautifier对象 $.fn.myPlugin = function(options) { //创建Beautifier的实体 var beautifier = new Beautifier(this, options); //调用其方法 return beautifier.beautify(); }})(jQuery, window, document);
分号的使用
说到js中的分号,首先我们需要了解一下js中的分号插入原理。在一般进行js开发的时候,有的开发人员会省略分号“;”,这是因为js在解析的时候有分号自动插入这么一回事。分号插入原理如下:
- 仅在}之前、一个或多个换行之后和程序输入的结尾被插入
- 仅在随后的输入标记不能解析时插入
- 省略分号导致脚本连接问题
- JavaScript语法限制产生式
- 自增自减运算的分号插入规则
- 分号不会作为分隔符在for循环空语句的头部被自动插入
对于js来说,一般的一行可以是一条语句,语句通过行来分割,可以省略分号,但是有正对以上的规则,有一些特殊的地方需要说一下:
1.当编写的js需要进行压缩,需要在语句后面加上分号;
2.(、[、+、-、和/ 这五个字符开始的语句,那么最好前面不要省略分号;
3.想省略分号,有经验的程序员会在该语句的后面跟一个声明语句,以保证解析器解析正确;
4.在每个文件前缀一个额外的分号以保护脚本免受粗心连接的影响;(这就是上面的示例代码最前面有分号的原因)
5.”++”和”–”符号的分号一定要注意;
6.for的头部和while循环中的空循环需要加上分号。
return的问题
如图,在这段代码中有两个return的函数返回,如果不加上return,这个插件的功能不会受到影响,但是我们肯定见过这样的jquery方法连写,$(“#name”).css().show().attr(),如果不加上上述功能函数没有return,那这样的连写就会出错。
关于this和$(this)
看一下调用这个myPlugin插件的两种方式:
$(function(){ $("a").click(function(){ $(this).myPlugin(); }) })
和
$(function(){ $("a").myPlugin(); }) })
在myPlugin插件中我们的this就是指的选中的jquery对象,在第一个调用方法中,this指的是a这个html对象,$(this)才是jquery对象,传入myPlagin中才可以调用jquery的.css()方法。
关于prototype
在myPlugin插件中,参数定义在两个空间内,一个是在Beatifier的初始定义的构造函数空间中(比如defaults ,option),另一个在Beatifier的原型空间中(比如函数参数beautify)。一般的我们把初始化参数放在构造函数中,把方法放在圆形控件中。这样的区别是,prototype的原型空间内的参数是所有对象共享的,当发生变化的时候,所有对象的对应参数都会发生变化,而放在构造函数中的参数,是属于每一个单独创建的对象的互不影响。
$运算符的含义
function(
在插件编写时的window,document相关参数
js中变量是有作用域链的
1.传递参数的方式后,这两个变量就变成了匿名函数的局部变量,访问起来的时候速度会快。
2.如果不传递也可以,但是当访问到该变量的时候js引擎首先会在函数自己的作用域找这个变量,没有的话继续往上找,找到了就返回该变量,找不到就返回undefined。
这两种方式你觉得哪个更方便,更高效。
- 关于jquery中编写插件的一些注意点分析
- jQuery中关于超链接click点击事件的注意点
- 关于AjaxPro的一些注意点
- 关于UIWebview的一些注意点
- 关于java编程的一些注意点
- 关于Django QuerySet的一些注意点
- 关于C++引用的一些注意点
- 关于GIT的一些注意点
- 关于C++引用的一些注意点
- 关于json的一些注意点
- jquery插件开发注意点
- javaScript中优化的一些注意点
- jsp中其他的一些注意点
- 项目中发现的一些关于JavaScript中JSON的注意点
- 关于jquery插件的那点事!
- 使用jquery的validate插件的注意点
- jquery.cookie插件的方法使用注意点
- 关于JAVA中"+"的注意点
- 学习方法
- ios原生推送
- cocos2dx迁移到android
- 数据库系统教程(第二版何玉洁)课后数据库上机实验答案
- ViewFlipper 的基础
- 关于jquery中编写插件的一些注意点分析
- linux远程桌面xrdp配置
- The Linux Kernel Device Model - Overview -- Linux 内核设备模型概述
- [Extjs6] SimManager创建模拟测试数据
- UnityWWW加载文件时下载到了网页内容而非文件内容
- for update、for update nowait、select t.*,t.rowid from table的区别
- 获取手机归属地
- Android事件处理(三)——View的onTouchEvent 函数源码详解
- nginx+uwsgi在Ubuntu下部署django