1)编写一个函数判断参数是否是数组类型,如果是返回 true
解题思路:
- typeof只能识别原始类型,它无法对function和object类型做进一步判断。
- 验证原型对象: var bool = obj.__proto__.constructor.name == 'Array' ? true: false;
- 验证实例: var bool = (obj instance of Array);
- 检查内部属性class:Object.prototype.toString.call(obj);
- 检查数组的专有方法:Array.isArray(obj);
答案:其中方法四和方法二必须掌握
方法一:
function isArray(arg) {
return (arg instanceof Array);
}
方法二:
function isArray(arg) {
return Object.prototype.toString.call(arg) == '[object Array]' ? true: false;
}
方法三:
function isArray(arg) {
return arg.__prototype__.constructor.name == "Array"? true: false;
}
方法四:
function isArray(arg) {
return Array.isArray(arg);
}
2)一般和后端API服务通信的方式有哪些?POST提交的时候,content-type有哪几种
答案:和后端API服务通信的方式有
- ajax
- websocket
- SSE
- 服务器端渲染
POST方式下,content-type常见的有四种
- application/x-www-form-urlencoded
- application/json
- multipart/form-data
- text/xml
3) 哪些对象有length属性,举例说明。
Window.length //返回当前窗口中frames的数量(包括iframes)
String.length //返回字符串中的字符数目
Function.length //获取一个函数定义的参数数目
Array.length //返回数组中元素的数目
4)IE支持的属性和方法
IE的所有事件对象都支持的方法和属性:
- cancelBubble 默认为false,设置为true就可以取消事件冒泡
- returnValue默认为true,设置为false就可以取消事件的默认行为
- SRCElement对于生成事件的window对象、document对象或element对象的引用
- type被触发事件的类型
DOM事件的方法(IE的事件模型不支持):
- initEvent() 初始化新创建的event对象的属性
- preventDefault() 通知浏览器不要执行与事件关联的默认动作
- stopPropagation() 不再派发事件
5)预编译css工具
css预编译工具有stylus,sass,less。
为什么会出现预编译器这个东西呢?这就要谈到css的不足之处了:没有变量(新的规范已经支持了),不支持嵌套,编程可以离较弱,代码复用性差。这些不足导致写出来的css维护性极差、于是css预编译器应运而生,且他们离不开三剑客:stylus,sass,less。
最先登场的是sass。也是最完善的,有各种丰富的功能。
less的出现伴随着bootstrap的流行,因为也取得大量用户使用。
最后出现的是stylus,室友TJ大神开发,特点是简单的语法,写起来很cool
6) 写一个js函数,返回一个字符串:今天星期几(几由当天的确定日期为准)
function myWeek(){
var weeks = ['一','二','三','四','五','六','七'];
return '今天是星期'+weeks[new Date().getDay()];
}