blog icon indicating copy to clipboard operation
blog copied to clipboard

JavaScript的那些琐碎的知识点

Open huruji opened this issue 6 years ago • 1 comments

  • 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 中的数据结构,在使用上的直观区别主要有以下: ![](https://user-images.githubusercontent.com/15937065/38328188-cbed1e7a-387c-11e8-8c8f-31a6acbb13dc.png)

另外在IE6/7中没有JSON这个JavaScript对象,不过可以使用json2.jsclarinetOboe.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?

MDN: void operator

5.javascript中语句和表达式的区别

![image](https://user-images.githubusercontent.com/15937065/40553767-3fa3b466-6076-11e8-8a8f-0ce73ebad2fe.png)

表达式会产生一个值,表达式之间使用逗号连接,语句是一种行为,像循环语句、if语句,语句之间使用分号连接。 image

参考:

[译]JavaScript中:表达式和语句的区别

6. HTML调用相机

在input为file中添加capture = “camera” 即可

<input type="file" accept="image/*" capture="camera" id="selectpic" multiple="multiple" style="display:none;" />

huruji avatar Mar 10 '18 12:03 huruji

7. 禁止手机微信浏览器上下滑动

这在手势移动时经常遇到,禁用可以使其表现的更像APP

document.querySelector('body').addEventListener('touchmove', e => {
     e.preventDefault();
})

在滑动的父级元素上添加上css属性:

touch-action: none;

核心思路就是禁止浏览器监听到touchmove事件,

huruji avatar Oct 04 '18 10:10 huruji