js封装成插件的步骤方法


Posted in Javascript onSeptember 11, 2017

由于项目原因,工作一年多还没用js写过插件,项目太成熟,平时基本都是在使用已经封装好的功能插件。感觉自己好low......这两天想自己抽空写一个canvas画统计图与折现图的插件,所以就去网上学习了下如何封装.....虽然之前看了很多源码,但是感觉就算了解也是野路子.....

什么是封装呢?

我的理解就是 把一个功能单独做成一个组件,就像做饺子,以前做饺子必须自己先用面粉做饺子皮,再做饺子馅,然后再手工包饺子,但是现在人们发明了自动包饺子机器,虽然机器里面的每一步骤和你自己包饺子是一样的,但是实际上你现在需要做的就只有一件事,就是放原料。这边机器就是封装好的插件,而原料就是你要传的参数

为什么要把js功能封装成插件呢?我觉得有以下几点吧

1、便于代码复用

2、避免各个相同功能组件的干扰,可能会有作用域的一些问题吧

3、便于维护,同时利于项目积累

4、不觉得一直复制粘贴很low么.......

我在网上看到的封装好像有两种,一种是js的原生封装,一种是jquery的封装。这边我先讲一下原生封装吧。

我们在封装的时候会把js代码放到一个自执行函数里面,这样可以防止变量冲突。

(function(){

  ......

  ......

}()}

然后再创建一个构造函数

(function(){

  var demo = function(options){

    ......

  }

}())

把这个函数暴露给外部,以便全局调用

(function(){
  var demo = function(options){
    ......
  }
  window.demo = demo;
}())

其实现在你可以直接调用了,封装好了,虽然没实现什么功能

var ss = new demo({
  x:1,
  y:2
});

或者

new demo({
  x:2,
  y:3
});

然后传参怎么搞呢,我们一个插件一般有一些必选参数或者可选参数,在我看来可选参数不过就是在插件里面给了默认值罢了。我们传的参数会覆盖插件中的默认参数,可以用$.extend({})覆盖

(function(){

  var demo = function(options){

    this.options = $.extend({

      "x" : 1,

      "y" : 2,

      "z" : 3

    },options)

  }

  window.demo = demo;

}())

然后你可以在在初始化构造函数的时候执行一些操作

(function(){
  var demo = function(options){
    this.options = $.extend({
      "x" : "1",
      "y" : "2",
      "z" : "3"
    },options);
    this.init();
  };
  demo.prototype.init = function(){
    alert("x是"+this.options.x+" y是"+this.options.y+" z是"+this.options.z);
  };
  window.demo = demo;
}());
new demo({
  "x" :"5",
  "y" :"4"
});
</script>

就是这样了。一个超级简单的封装

js封装成插件的步骤方法 

我这边有个疑问,extend只是jquery有吗,js对象有什么代替方法吗?晚点在看看............. 

还有需要提的是封装js的时候我们要考虑周全,比如它的扩展性和兼容性,还有性能怎么样,还有没必要的就不需要封装了......要有选择性。

现在网上已经完成的插件数不胜数,而且功能又十分强大,但是恰恰是这点,有的时候一个很大的插件我们只用到很小的一部分,那么就需要我们自己修改成适合我们自己的了,而且有些项目的风格和现在的插件风格也不同,所以关键是要适合自己的项目。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 匿名函数(anonymous function)与闭包(closure)
Oct 04 Javascript
js中widow.open()方法使用详解
Jul 30 Javascript
JavaScript函数获取事件源的小例子
May 14 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
Oct 11 Javascript
常用的JavaScript模板引擎介绍
Feb 28 Javascript
JavaScript阻止浏览器返回按钮的方法
Mar 18 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
Jul 14 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
Apr 12 Javascript
layer实现关闭弹出层刷新父界面功能详解
Nov 15 Javascript
Bootstrap-table自定义可编辑每页显示记录数
Sep 07 Javascript
vant 解决tab切换插件标题样式自定义的问题
Nov 13 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
Sep 11 #Javascript
Chrome调试折腾记之JS断点调试技巧
Sep 11 #Javascript
JS中的Replace()传入函数时的用法详解
Sep 11 #Javascript
浅谈vue+webpack项目调试方法步骤
Sep 11 #Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
Sep 11 #Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 #Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 #Javascript
You might like
php快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
js 日期转换成中文格式的函数
2009/07/07 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
javascript简易画板开发
2020/04/12 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
Three.js利用性能插件stats实现性能监听的方法
2017/09/25 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
Pandas分组与排序的实现
2019/07/23 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
Java语言程序设计测试题选择题部分
2014/04/03 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
《满井游记》教学反思
2014/02/26 职场文书
访谈节目策划方案
2014/05/15 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP