1、js往数组中加入元素的方式有哪些?
(1)向数组结尾添加元素:
- 用push()—简单 或 concat()—比较高效:
var arr = [1,2,3,4,5];
var arr2 = [];
arr.push(6);
//arr[arr.length] == 6;
arr2 = arr.concat([6]);
(2)向数组中间添加元素:
- 使用splice()是简单的,也是最高效的方法:
var items = ['one', 'two', 'three', 'four'];
items.splice(items.length / 2, 0, 'hello');
//['one','two','hello','three','four']
(3)向数组的头部添加元素:
- unshift操作的是原始数组,concat会返回一个新数组:
var arr = [1,2,3,4,5];
arr.unshift(0); //[0,1,2,3,4,5]
[0].concat(arr); //[0,1,2,3,4,5]
2、jQuery中 显示/隐藏 元素的方法
- 使用jQuery的 hide() 和 show() 方法实现显示与隐藏;
- 使用jQuery的 .attr() 方法对样式进行操作:
$("#demo").attr(“style”,“display:none或block;”);//隐藏或显示div - 使用 .css() 方法对样式进行操作:
$("#demo").css(“display”,“none"或"block”);//隐藏或显示div
3、js中延时指定毫秒数调用函数是?
setTimeout()—查看详细
4、js原型链是什么?
- 实例的 _proto_ 属性(原型)等于其构造函数的 prototype 属性。
- Object.proto ===Function.prototype
- Function.prototype.proto === Object.prototype
- Object.prototype.proto === null
- 参考:jsliang-面试准备5.3原型与原型链
- 原型链图解
5、js浅拷贝与深拷贝是?
- 浅拷贝:仅仅拷贝了地址,不是完整复制,修改原对象拷贝对象也会随之改变;
- 深拷贝:完全备份体,有自己的地址,修改原对象拷贝对象不会随之改变。
- 跳转查看JS篇第四条
6、事件捕获与事件冒泡的区别是?
- 事件捕获:捕获型事件(event capturing):事件从最不精确的对象(document 对象)开始触发,然后到最精确(也可以在窗口级别捕获事件,不过必须由开发人员特别指定);
- 事件冒泡:和捕获阶段相反—冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发;
- 事件捕获和事件冒泡属于两个相反的过程,这里可以有一个我感觉十分恰当的比喻,当你把一个可以漂浮在水面上的物品,使劲向水里砸下去,它会首先有一个下降的过程,这个过程就可以理解为从最顶层向事件发生的最具体元素(目标点)的捕获过程;之后由于浮力大于物体自身的重力,物体会在到达最低点( 最具体元素)之后漂浮到水面上,这个过程相对于事件捕获是一个回溯的过程,即事件冒泡。
-原文链接:终于弄懂了事件捕获与事件冒泡 - 事件捕获与事件冒泡过程参照图
- 简书—事件冒泡和事件捕获到底有何区别
7、ES6中有哪些新特性?
- Default Parameters(默认参数) in ES6;
Template Literals (模板文本)in ES6;
Multi-line Strings (多行字符串)in ES6;
Destructuring Assignment (解构赋值)in ES6;
Enhanced Object Literals (增强的对象文本)in ES6;
Arrow Functions (箭头函数)in ES6;
Promises in ES6;
Block-Scoped Constructs Let and Const(块作用域构造Let and Const);
Classes(类) in ES6;
Modules(模块) in ES6;
【备注】这里只列出了10条比较常用的特性。并不是所有的浏览器都支持ES6模块,所以你需要使用一些像jspm去支持ES6模块。 - 详细可查看:十大常用新特性
- ES6教程