js 插件封装的一点理解

先说结论
利用函数作用域,创建私有函数及私有变量

在学习如何封装类或者函数时,亦或是学习写插件的时候。常常是看其他优秀代码。

用面向过程的思想去看面向对象思想的代码,真不要太奔溃。简直就是十万个为什么,除了不理解还是不理解,只能疯狂百度。看了半个月的代码,终于有点自己的理解。

顺嘴一提,我看到的例子是从jq插件库、和张鑫旭的个人网站来的。

对于jq的封装。
$.fn.你的插件名
本身jq是一个优秀的插件了, 这相当于在jq的二次开发,给jq添加方法,可以想想prototype。也可以参考百度,有很多帖子都有详细步骤。
大概来说常用到为以下:
$.fn, $.fn.extend, $.extend

(function(){ 你的代码块...})()
立即执行函数,主要是为了使用函数作用域的特性,你的代码块中的变量不会泄露给全局,不会被其他人影响。
一般会在前面加分号。因为()()可以被引擎识别执行,也是执行函数。若上面有人加正好写了函数,又没有结尾。引擎会理解错你的意思的。

对于js的封装
function YourName(){} YourName.prototype.litterName
这里就谈到面向对象的内容了。一个function只做一件事。而YourName.prototype.litterName
这里面不一定只有一个函数,常常会被抽离出私有函数,就是只是提供给litterName调用的函数。抽离出来的函数放在哪里?

只要能被引用到,管它放哪里呢。其实也没有错。但是,如果放全局有这么一个考虑
万一人家用了同样的名字,可是会被覆盖掉你的功能或值的,那这个引用就没效了。
怎么办?不让别人碰咯,利用函数的作用域,利用闭包,都可以达到这个效果。
像这样 (function(){ 你的代码块...})()

其实两者差别不大,打好基础,了解为什么。千变万化也能很快的理解到位。

以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值