数据类型:
基础数据类型5种:布尔 number string null undefined
复杂数据类型1种:object
ES6新增 Symbol表示独一无二的值 初始化不需要使用new操作符
数据类型判断:
普通数据类型使用:typeof null和object返回的都是object
typeof是一元操作符不是函数
对象进行判断
数组的判断
var a=[]
Array.isArray(a) //true
a.constructor === Array //true
// 多个iframe使用如下方式
Object.prototype.toString.call(a) === "[object Array]"
数组
数组的方法
push() pop() shift() unshift() reverse() sort() concat() slice() splice() indexOf() lastIndexOf() every() filter() forEach() map() some() reduce() reduceRight()
数组去重
空数组循环push的方式,一个一个的把原数组push进去。push前indexof判断一下新的值在数组种有没有,没有就push 有就下一个
在原数组上进行去重的操作,对原数组有影响。用splice() 从原系统上一次进行对比,对比的数组项在前面或者后面有的话就删除当前的值,删掉后要吧数组的长度减1
使用对象的属性不能相同的特点去重。
对原数组进行排序,然后循环如果相邻的元素相同就删除
最短的数组去重
[...] new set(arr)
伪数组有哪些?
- DOM选择器选择的节点列表
- 函数中的 argument对象
- jq选择器选择的jq对象
伪数组如何转换为数组
- 新建一个数组把伪数组的每一项循环放入到新数组中。
- Array.prototype.slice.call(伪数组) 或者 [].slice.call(伪数组)
字符串
字符串的方法
charAt() concat() charCodeAt() indexOf() lastIndexOf() split() slice() substring() substr() toLowerCase() toUpperCase() trim()
slice() substring() substr() 的区别
数字
如何判断一个东西是否是NaN?
isNaN() 不是用来判断是否是NaN,而是用来判断你传进去的参数是否可以转换为数字。
NaN不全等于自身。ES6的is() 方法。
布尔类型
js中哪些类型转化为布尔类型为false?
undefined 0 -0 null "" NaN
任何对象转化为布尔类型都是true。 new Boolean(false) 转化为布尔类型还是true
快速的将将数据转化为布尔类型 两个!!
new操作符的执行过程
- 创建一个空对象
- 修改this指针指向创建出来的对象
- 运行构造函数中的所有代码
- 将创建出来的对象作为返回值进行返回
使用new操作符没有参数的时候()是可以省略的。
###对构造函数来讲里面的返回值应该是什么样的?
返回值分成几个问题:
new操作符本身就会创建一个对象然后把他返回一个对象。也就是说new操作符创建出来的一定是一个对象。
如果你在构造函数里面显示的写了一个返回值,即return **。这时会发生什么情况:
- 返回的值不
← 鼠标事件