一、写一个判断设备来源的方法
let ua = navigator.userAgent;
// 移动端
isMobile: ("ontouchstart" in window || navigator.msMaxTouchPoints) ? true : false,
// 微信
isWechat: /micromessenger/gi.test(ua),
// qq
isQQ: /qq/gi.test(ua),
// VV音乐
isvvmusic: /vvmusic/gi.test(ua),
// 安卓
isAndroid: /android/gi.test(ua),
// iOS
isIOS: /iphone|ipad|ipod|itouch/gi.test(ua), // IOS
二、bind、call、apply的区别?并手写实现一个bind的方法
call和apply都是为了解决改变this的指向。作用都是相同的,只是传参的方式不同。
除了第一个参数外,call可以接收一个参数列表,apply只接受一个参数数组。 bind绑定完之后返回一个新的函数,不执行。
这个以后还得再看看。
https://github.com/haizlin/fe-interview/issues/92
三、对arguments的理解,它是数组吗?
arguments是一个对象。
js不能像java一样实现重载,arguments对象可以模拟重载。
js中每个函数都会有arguments这个实例,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素。arguments.length为函数实参个数,arguments.callee引用函数自身。
arguments他的特性和使用方法
特性:
1.arguments对象和Function是分不开的。
2.因为arguments这个对象不能显式创建。
3.arguments对象只有函数开始时才可用。
使用方法:
虽然arguments对象并不是一个数组,但是访问单个参数的方式与访问数组元素的方式相同
例如:
arguments[0],arguments[1]...