blog
blog copied to clipboard
JavaScript的那些琐碎的知识点
- 1.Object.create(null)与{}的区别
-
2.
~~
的作用 - 3.JavaScript对象与JSON的区别
-
4.
javascript:void 0
到底意味着什么 - 5.javascript中语句和表达式的区别
1.Object.create(null)与{}的区别
Object.create(null)创建的对象没有继承任何原型,也就是说他的原型链没有上一层,而{}显然是Object的实例
我们要知道Object.create()方法的第一个参数是新建对象的原型对象呀!!!
Object.create(null)显然比{}的好处就是不用考虑和原型对象的属性重名的问题
Object.create(null)常常会在很多流行的开源项目中出现,我初次见到的时候就开始一脸懵逼了,完全不明白这有啥意义,等我明白之后不得不承认这就是大神呀
2.``~~``的作用
首先``~``的作用是取反,使用两次就是取回原值,但是如果是小数的话,就是取整了,因为``~``取反时面对小数时会先取整,而且``~~``取整是所有取整方法中最快的方法- 格式化
- 时间差
- Unix 时间戳 (毫秒)
- Unix 时间戳 (秒)
- 天数 (月)
- Date 对象
- 数组
- JSON
- ISO 8601 字符串
- 对象
- 字符串
3.JavaScript对象与JSON的区别
首先JSON是一种独立于语言的文本格式,不是**对象**(敲黑板),通俗点来说是结构化的字符串。JSON.parse的JSON只是一个JavaScript的一个Util对象而已,这个API是用于把存储了 JSON 文本格式的字符串解析为 JavaScript 中的数据结构,在使用上的直观区别主要有以下: 另外在IE6/7中没有JSON这个JavaScript对象,不过可以使用json2.js、clarinet、Oboe.js等库。
另外不要忘记查标准、看官网呀,(这怎么越来越像搞科研的了,F**k)。json官网:http://json.org、ECMA404标准(也就是JSON标准):http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
4. javascript:void 0到底意味着什么
首先请记住一点:void
是一个操作符,且这个操作符返回的是 undefined
经常会在href中看到javascript: void(0)
类似的代码,这段代码直接表现就是禁用了链接点击后跳转的默认功能,浏览器中的行为是遇到javascript:
开头的URI,将会将后面的结果替换为href的内容,除非返回的值是 undefined
。
其实,不仅在浏览器端可以使用,在任何时候我们需要这个 undefined
的时候都可以使用,比如:dayjs判断是否全等于 undefined
就是利用 void 0
const isUndefined = s => s === void 0
参考:
What does “javascript:void(0)” mean?
5.javascript中语句和表达式的区别
表达式会产生一个值,表达式之间使用逗号连接,语句是一种行为,像循环语句、if语句,语句之间使用分号连接。
参考:
6. HTML调用相机
在input为file中添加capture = “camera” 即可
<input type="file" accept="image/*" capture="camera" id="selectpic" multiple="multiple" style="display:none;" />
7. 禁止手机微信浏览器上下滑动
这在手势移动时经常遇到,禁用可以使其表现的更像APP
document.querySelector('body').addEventListener('touchmove', e => {
e.preventDefault();
})
在滑动的父级元素上添加上css属性:
touch-action: none;
核心思路就是禁止浏览器监听到touchmove事件,