JavaScript 封装插件学习笔记(一)
此篇只是笔记,在借鉴、参考、模仿的过程,可能不完整,请多指教!
定义插件名称要注意命名冲突,防止全局污染。
1.第一种Javascript对象命名:(Javascript语言是“先解析,后运行”,解析时就已经完成了变量声明,所以 a等同于b。var命令的"代码提升"(hoisting)作用。Javascript解释器,只"提升"var命令定义的变量,对不使用var命令、直接赋值的变量不起作用,这就是为什么不加var会报错的原因)
a.等同于 b.
2.第二种写法:
window是javascript的顶层对象,所有的全局变量都是它的属性。判断window对象是否有myObj属性,这样可以避免因为没有定义myObj而出现ReferenceError错误。不过,从代码的规范性考虑,最好还是对第二行加上var。
3.第三种写法:
第二种写法缺点在于,在某些运行环境中,window未必是顶层对象。在全局变量的层面中,this关键字总是指向顶层变量,所以就可以独立于不同的运行环境。所以改成:
4.第四种写法
上面这样写可读性较差,而且this的指向是可变的,容易出错,所以进一步改写:
5.第五种写法
使用 typeof 运算符,判断myObj 是否有定义。(目前使用最广泛的判断javascript对象是否存在的方法。)
6.第六种写法
由于在已定义、但未赋值的情况下,myObj的值直接等于undefined,这种是定义的是undefined类型,不是字符串"undefined"。(undefined在老一辈的浏览器是不被支持的)。 所以上面的写法可以简化:
精确比较:
7.第七种写法
根据javascript的语言设计,undefined == null,所以比较myObj是否等于null。
8.第八种写法
使用in运算符,判断myObj是否为顶层对象的一个属性
9.第九种写法
使用hasOwnProperty方法,判断myObj是否为顶层对象的一个属性
最新文章
- 【转】Win8下安装SQL Server 2005无法启动服务
- spring aop一些名词的理解
- Hadoop2.20集群搭建
- 【poj3342】 Party at Hali-Bula
- checkbox实现全选全不选
- C++混合编程之idlcpp教程Lua篇(2)
- 通过实验窥探javascript的解析执行顺序
- codevs2606 约数和问题
- PC客户端测试总结
- nodejs教程
- UVA 12166 Equilibrium Mobile
- Python小代码_1_九九乘法表
- memcached单机或热备的安装部署
- MathExam Lv2
- Bitmap too larget to be uploaded into a texture的解决方法
- linux-linnode满了的提示
- dp——环形石子合并(区间dp)
- ubuntn安装
- Elasticsearch6.3 使用jdbc连接
- [Selenium] 怎样判断是否适合自动化测试
热门文章
- 根据判断数组不为空然后取他的值----数组不会为空---只能判断其size是否大于0
- 20180725利用pmm监控管理mysql
- VNC Viewer 设置屏幕分辨率-解决屏幕分辨率问题
- 22、Java并发性和多线程-Java中的读/写锁
- SVM学习(续)核函数 &; 松弛变量和惩罚因子
- 1. MaxCounters 计数器 Calculate the values of counters after applying all alternating operations: increase counter by 1; set value of all counters to current maximum.
- LeetCode 690. Employee Importance (职员的重要值)
- git diff比较使用
- 二分查找法(binary search)
- win7下远程登录ubuntu mysql