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是否为顶层对象的一个属性
转载于:https://www.cnblogs.com/yi-miao/p/9294632.html
JavaScript 封装插件学习笔记(一)相关推荐
- 7 种 Javascript 常用设计模式学习笔记
7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! JavaScript 权威指南-学习笔记 ...
- React学习:ref调用、组件封装调用-学习笔记
文章目录 React学习:ref调用.组件封装调用-学习笔记 ref调用-string形式 ref调用-回调形式(官方推荐) ref调用-父调子 组件封装调用demo(全选) demo1(单组件) d ...
- Gradle插件学习笔记(二)
之前介绍了Gradle插件的开发,这次会对功能进行一部分拓展,建议没有读过第一篇文章的朋友,先看一下Gradle插件学习笔记(一) Extension 之前的文章提到过,如何编写一个插件,但是并不能通 ...
- JavaScript高级程序设计学习笔记(三)
分享一下第五章(引用类型)的笔记,内容比较多,我拆成了两部分,今天这部分是关于Object.Array.Date和RegExp类型的. 以下的笔记是书上一些我以前学习的时候,没有太重视的js基础知识, ...
- Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换
Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换 *版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插 ...
- Unity Cinemachine插件学习笔记
以下都是转载内容,能够比较直观的学习一些基础内容.现在的Cinemachine更新了许多新的功能,但是Cinemachine插件都ExamplesScences,去看一下官方例子和文档来学习更佳 *版 ...
- Unity Cinemachine插件学习笔记,结合Timeline实现简单场景动画
Unity Cinemachine插件学习笔记,结合Timeline实现简单场景动画 *版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 [Unity] ...
- JavaScript程序库jQuery学习笔记分享(二)jQuery对象和DOM操作,和其他js库冲突处理
今天我继续更新jQuery学习笔记,最近考试比较忙,也就更新的比较慢了,这里向大家说一声抱歉,嘻嘻. 让那不愉快的情绪过去吧,继续进行我们的jQuery之旅吧. 一:jQuery对象和DOM对象 1. ...
最新文章
- C++中四种强制类型转换的区别
- 【CyberSecurityLearning 23】mail server(邮件投递原理)
- 转一个后缀数组的简单总结:
- 读取SSDT表和原函数地址
- 抽象工厂模式_抽象工厂模式
- spm on mysql_Announcement: MySQL Performance Monitoring in SPM_MySQL
- [转]JSON and Microsoft Technologies(翻译)
- leetcode953. Verifying an Alien Dictionary
- f5在运营商计费系统中的版本升级割接详细步骤
- 华为机试HJ25:数据分类处理
- 【编译原理笔记19】代码优化: 支配结点和回边,自然循环及其识别,删除全局公共子表达式和复制语句,代码移动,作用于归纳变量的强度削弱,归纳变量的删除
- 零基础自学python-零基础如何自学Python并且找到工作,其实也就这3点,4点
- 【2018.9.26】K-D Tree详解
- 已知三点求圆心 c语言,转 已知两点坐标和半径求圆心坐标程序C++
- 4G网络起源及发展历程
- 【智能零售】解读双11后的新零售趋势
- Android targetSdkVersion从23升级到26适配指南
- java我的世界_我的世界Java版
- 国际移动设备识别码IMEI
- PHP隐私保护通话,AXB模式_隐私保护通话 PrivateNumber_开发指南_代码样例_PHP代码样例_华为云...
热门文章
- js 性能优化整理之 缓存变量
- php5.3的新特性
- 【转自元宝兄】关于delphi Com+调用C# DLL的一点说明
- 几款开源的数据挖掘工具
- Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
- 机器学习(Machine Learning)深入学习(Deep Learning)资料
- Python 存储模型
- 动画体系知识梳理(1) 转场动画 ContentTransition 理论篇
- CoreOS Linux Alpha的重大漏洞已修复
- 示例在同一台机器上使用RMAN克隆数据库