前端面试题大全
2022-03-22 本文已影响0人
有一个程序媛
1. 判断一个变量是数组有几种方式?
(1) instanceof ,原型判断,写法:变量 instanceof Array
(2) __proto__,原型判断,写法:变量.__proto__ === Array.prototype
(3) constructor,原型判断,写法:变量.constructor === Array
(4) .prototype.toString,通过object类型的副属性class去判断的其中函数的class是Function,结果是[object Function], 普通的对象是Object,结果是[object Object],写法:Object.prototype.toString.call(变量) === '[object Array]'
(5) Array.isArray,es6新增的方法,写法:Array.isArray(变量)
2.tree-shaking原理
参考原网址详解,十分详细,清晰明了
https://zhuanlan.zhihu.com/p/127804516
3.flex布局的详解
https://www.runoob.com/w3cnote/flex-grammar.html
4.vue.nextTick原理
5.css垂直居中的方法
https://www.cnblogs.com/qianxiaoPro/p/14276519.html
6.ES5的继承和ES6的继承有什么区别?
ES5的继承时通过prototype或构造函数机制来实现。ES5的继承实质上是先创建子类的实例对象,然后再将父类的方法添加到this上(Parent.apply(this))。
ES6的继承机制完全不同,实质上是先创建父类的实例对象this(所以必须先调用父类的super()方法),然后再用子类的构造函数修改this。
具体的:ES6通过class关键字定义类,里面有构造方法,类之间通过extends关键字实现继承。子类必须在constructor方法中调用super方法,否则新建实例报错。因为子类没有自己的this对象,而是继承了父类的this对象,然后对其进行加工。如果不调用super方法,子类得不到this对象。
ps:super关键字指代父类的实例,即父类的this对象。在子类构造函数中,调用super后,才可使用this关键字,否则报错。