JavaScript相关
- Boolean && 变量
Boolean || 变量
可以用来设置默认值
a.indexOf(b)
a为字符串或者数组a.toFixed(2)
a类型为number,保留小数- toString()可以判断对象的类型。
Object.prototype.toString.call(<value>)
-a
可以将a转化为number类型- 正则表达式
//gi
,g表示全局搜索,i表示忽略大小写 - js不支持负向零宽断言
/(?<=Jack)Sprat/
(ES2018后支持) - Math.floor()向下取整,Math.ceil()向上取整,Math.round()四舍五入。
- arr.sort()如果 a 小于 b,返回值为负数,如果 a 大于 b,返回值为正数。
- substr() 方法返回一个字符串中从指定位置开始到指定字符数的字符。
不改变原数组,字符串
str.substr(start[, length]) Array.prototype.slice()
String.prototype.slice()
slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。Array.prototype.splice(start[, deleteCount[, item1[, item2[, ...]]]])
splice() 方法通过删除现有元素或者原地添加新的元素来修改数组,并以数组形式返回删除的元素。此方法会改变原数组。Array.forEach(arguments, func())
对非数组序列进行forEach处理Array(<len>).fill(<value>)
填满数组- 数组操作: shift(),unshift(),pop(),push()。改变原数组。
- this总是指向函数的直接调用者(而非间接调用者),在DOM事件中,this指向定义这个事件的DOM对象;
t=setTimeout(fun(), N毫秒);
与clearTimeout(t)
;t=setInterval();
,clearInterval(t)
;- async与await
1 | var start = async function () { |
e.preventDefault();
e.stopPropagation()
阻止捕获和冒泡阶段中当前事件的进一步传播
对象处理
- Object.keys(obj)得到对象的可枚举属性
delete Obj.prop
删除对象属性- 字符串与对象的转换:
JSON.stringify(json)
;JSON.parse(string)
。Array也是Object类型 - 字符串变量d用作对象属性名:
{ [d]: !this.state[d] }
作用域
- if块级作用域在ES5与ES6中不同
- const a = func; 与function a(){}的变量提升方式不同;
- for循环中let 与var i = 0,在函数中不同
原型继承
- 对象的constructor属性指向它的构造函数。对象的__proto__属性指向上一级的原型对象。构造函数的prototype等于其生成对象的getPrototypeOf(
__proto__
)。 - 必须显式地设置原型才能确保动态的继承,将B设置为A的原型链: A.prototype = new B;
- 将构造器B属性传给A作为A的自身属性
1 | function A (a, b) { |
- A为函数:
A.prototype={ constructor: A, __proto__: 基本prop }
Web APIs
- 在chrome中加入断点:在源码中加入
debugger
。 - 前端全局对象window,node.js全局对象global。全局对象可以用来设置全局变量window.abc
window.location
获取当前页面网址信息,可进行页面跳转- fetch跨域加上{ mode: ‘no-cors’ },response类型为opaque,status为0。或者使用fetch-jsonp
- 赋值
localStorage.abc = string
,数字存入localStorage后变为string - URLSearchParams
- es6 array新方法