1.一个获取类型的函数
Object.prototype.toString.call(any)使any通过call()去调用对象原型上的方法去获取类型[object Type],再通过正则表达式过滤掉,最后得到type类型。
2.call()和apply()
用法: B.apply(A,arguments)
B.call(A,arg1,arg2,arg3...)
他们的相同点在于都可以使A对象调用B对象的方法,不同点在于传参方式不同。call()是将每个参数并列出来,apply()是将所有参数依次放入一个数组,读参的时候再将数组的每一项依次取出。
由此特性扩展,取数组中的最大/小值。
var max = Math.max.apply(null,array);
call()和apply()还可以实现继承。
3.变量、函数表达式——变量声明,默认赋值为undefined;函数声明——声明提升,预先赋值。
4.事件冒泡和捕获
当一个父盒子和子盒子同时绑定某个事件时,在子盒子上触发这个事件,事件函数的调用顺序如何?
子盒子的事件函数先触发,再往上传递给父盒子,这就是冒泡事件;
父盒子的事件函数先触发,再往上传递给子盒子,这就是捕获事件;