最近在开发过程中用别人的插件有问题,所以研究了一下,怎么封装自己的插件。

如果是制作jquery插件的话。就将下面的extend方法换成  $.extend 方法,其他都一样。

总结一下实现原理:

将方法体封装在一个自执行的函数体里面,防止变量污染。

默认参数在options设置,extend方法有由for-in遍历得到,使得参数为用户制定参数。
this.init是项目初始化,init,extend,event方法都是在demo对象的原型链上面的方法,方便调用。
将自己的方法直接卸载event方法里面就可以,调用参数调用this.options.x 就可以使用。

下列代码封装成js,引入,如何使用方法在下面.

(function () {
'use strict';
var demo = function (options) {
//demo("options") 或者 new demo("options")都可以使用demo方法
if(!(this instanceof demo)){return new demo(options)}; // 参数合并 extend方法体在下面
this.options = this.extend({
"x": "1",
"y": "2",
"z": "3"
}, options);
this.init();
//初始化
};
demo.prototype = {
init: function () {
this.event();
},
// 参数合并方法体
extend: function (obj, obj2) {
for (var key in obj2) {
obj[key] = obj2[key];
// 确保参数唯一
}
return obj
},
event:function () {
var _this = this; //方法调用前的回调
_this.options.open&&_this.options.open(); //此处执行方法体,使用 this.options.x\this.options.y\this.options.z进行访问 //打印参数
console.log(this.options.x) // 方法结束的回调
_this.options.close&&_this.options.close();
}
}
//暴露对象
window.demo = demo;
}()); // 使用方法 demo("args") 和 new demo("args")
demo({
"x": "111",
"y": "3",
"c":"ccc",
open:function () {
console.log("start")
},
close:function () {
console.log("end")
}
});

最简单的原生js和jquery插件封装的更多相关文章

  1. 【前端性能】必须要掌握的原生JS实现JQuery

    很多时候,我们经常听见有人说jquery有多快多快.在这个各种类库满天飞的时候,不得不说的是,能有原生JS快吗? 是的,明显原生JS要更快,因为诸如JQuery这样的库必须要兼容各种浏览器和低版本和许 ...

  2. 原生js日期时间插件鼠标点击文本框弹出日期时间表格选择日期时间

    原文出处 (这是我从互联网上搜来的,感觉能满足各方面的需求.个人感觉挺不错的,所以后期修改了一下向大家推荐!) 效果图: html代码: <!DOCTYPE html PUBLIC " ...

  3. 原生js和jquery实现图片轮播特效

    本文给大家分享的是使用原生JS和JQ两种方法分别实现相同的图片轮播特效,十分的实用,也非常方便大家对比学习原生js和jQuery,有需要的小伙伴可以参考下. 1)首先是页面的结构部分对于我这种左右切换 ...

  4. 原生js和jquery实现图片轮播特效(转)

    本文给大家分享的是使用原生JS和JQ两种方法分别实现相同的图片轮播特效,十分的实用,也非常方便大家对比学习原生js和jQuery,有需要的小伙伴可以参考下. 1)首先是页面的结构部分对于我这种左右切换 ...

  5. 原生JS和JQuery的区别

    1.原生js和jQuery的入口函数加载模式不同 原生js等页面dom加载完成并且图片等资源也加载完成之后才会执行: jQuery则是等页面dom加载完成执行,不会等图片等资源也加载完成: (也就是说 ...

  6. onload事件与ready事件的区别,原生js与jquery的区别

    onload事件与ready事件分别是原生js与jquery的入口函数 原生js入口函数写法: window.onload=function(){ } jquery入口函数写法: $(document ...

  7. 原生js仿jquery一些常用方法

    原生js仿jquery一些常用方法 下面小编就为大家带来一篇原生js仿jquery一些常用方法(必看篇).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧   最近迷上了原 ...

  8. JavaScript中函数和类(以及this的使用<重点>,以及js和jquery讲解,原生js实现jquery)

    1.javascript中以函数来表示类: 一般函数是小写开头:function foo() 类开头是大写:function Foo() 实例化类: obj = new Foo() 其他属性就同类是一 ...

  9. 原生js、jQuery实现选项卡功能

    在大家在网上平常浏览网页的时候,想必各位都会看到选项卡功能,在这里给大家详解一下用原生js.jQuery如何来写一些基本的选项卡 话不多说,先给各位看一下功能图:              好了,下边 ...

随机推荐

  1. 7、字典和string的用法

    #dic={1:'alex','age':35,'hobby':{'girl_name':'铁锤','age':45},'is_handsome':True} # dic={'age':'alex', ...

  2. JAVA进阶15

    间歇性混吃等死,持续性踌躇满志系列-------------第15天 1.TCP网络程序 package code0329; import java.io.BufferedReader; import ...

  3. 使用scrapy爬虫,爬取起点小说网的案例

    爬取的页面为https://book.qidian.com/info/1010734492#Catalog 爬取的小说为凡人修仙之仙界篇,这边小说很不错. 正文的章节如下图所示 其中下面的章节为加密部 ...

  4. kubenetes_V1.14.0 安装部署

    k8s的安装有多种方式,如yum安装,kubeadm安装,kubemini安装,二进制安装(生产环境多采用此方式精确控制安装)等.本文是入门系列验证,之前进行过yum安装,可以查看文章<k8s入 ...

  5. html 文字少则居中多则居左

    <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="index ...

  6. layui table 内容为select隐藏问题

    <style> .layui-table-cell,.layui-form,.layui-table-box,.layui-table-body{ overflow: visible; } ...

  7. Mysql 多实例 +表损坏

    什么是实例? 进程+多个线程+预分配的内存结构 MySQL多实例: 多个进程+多个线程+多个预分配内存结构 多个配置文件: 1)多个端口 2)多个数据目录 3)多个socket文件 ./mysql_i ...

  8. Percona 5.7.13 已经发布

    Percona 5.7.13 已经正式发布,需要的人士可以去官方网站下载 https://www.percona.com/downloads/Percona-Server-5.7/Percona-Se ...

  9. 微信小程序上的map组件bindregionchange地图视野变化函数成功回调会产生2次值的问题?

    bindregionchange确实是会触发两次,第一次是视野变化开始,第二次是视野变化结束. 你可以尝试把e.type给打印出来,值为begin表示开始,值为end表示结束. wxml: js:

  10. 逻辑卷管理(linux)

    (创建分区)1.fdisk /dev/sdb2.n3default4.default5.+200M6.w7.partprobe(更新分区)8mkfs.ext4 /dev/sdb1//格式化sdb1.. ...