在事件中,this指向触发这个事件的对象,特殊的是,在IE中的attachEvent中的this总是指向全局对象 window。
6、事件模型的理解?
冒泡型事件:当使用冒泡型事件时,子级元素先触发,父级元素后触发。
捕获型事件:当使用捕获型事件时,父级元素先触发,子级元素后触发。
7、new操作符具体做了干了什么?
创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型;
属性和方法被加入到this引用的对象中;
新创建的对象由this所引用,并且最后隐式地返回this。
8、说说堆和栈的区别?
栈内存:存储的都是局部变量,后进先出,栈内存的更新速度很快,因为局部变量的声明周期都很短。
堆内存:存储的都是数组和对象,堆里面的实体不会被释放,但是会被当成垃圾,java有垃圾回收机制不定时地收取。
9、JS数组和对象的遍历方式,以及几种方式的比较。
for循环——循环每进行一次,就要检查一下数组的长度,速度比较慢;
for in 循环——需要分析出array的每一个属性,这个操作性能开销很大。
forEach循环——不能遍历对象,不可以使用continue、break跳出循环,且使用return是跳出本次循环。
10、map与forEach的区别?
forEach是最基本的循环,默认有三个参数:array、item、index;
map的用法和forEach基本一致,不同的是它会返回一个数组,所以callback需要有return值,如果没有,会返回underfined。
11、说说箭头函数与普通函数的区别?
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象;
不可以当作构造函数,也就是说不能使用new关键在,否者会抛出一个错误;
不可以使用arguments对象,该对象在函数体内不存在。如果要使用,可以用Rest参数代替;
不可以使用yield命令,因此箭头函数不能当作Generator函数。
12、javascript定义类的四种方法?
工厂方法、构造函数方法、原型方法、组合使用构造函数和原型方法。
13、javascript实现继承的三