实际上面试问的问题挺多的,有BFC,微任务/宏任务,VUE生命周期,POSITION的取值,VAR变量提升,闭包,this取值有多少种情况,如何修改this指向,工作上最有成就感的事情等等,都是些比较基础的内容,这里不过多说明了。主要说下比较难的题目。
1. 构造一个二叉树,采用广度优先的方式遍历输出。
可以扩展到前中后序遍历,根据前中序还原二叉树,根据中后序还原二叉树,线索二叉树,平衡二叉树,哈夫曼树等等。
1 | // 构造一棵二叉树(Binary Tree) |
2.有一个由字母构成的字符数组, 要求让其按照大小写排序,小写在前,大写在后,不改变原始数组中大小写的相对顺序。
如:['D', 'a', 'F', 'B', 'c', 'A', 'z']
,输出为['a', 'c', 'z', 'D', 'F', 'B', 'A']
1 | String.prototype.isBIG = function (){ |
3.用一个for循环输出数组中出现次数最多的一个元素和它出现的次数。如果出现次数最多的元素不只一个,又该如何应对?
1 | function generateArray(len){ |
4. JS中this的5种情况
参考:https://www.bbsmax.com/A/kjdwpp8wzN/
- 给元素的某个事件行为绑定方法,事件触发,方法执行,此时方法中的this一般都是当前元素本身:
1 | // <div id="div"></div> |
这里边有个特殊情况就是DOM2级绑定事件
1 | div.attachEvent('onclick',function anonymous(){ |
- 普通函数执行,它里边的this是谁,取决于方法执行前面是否有“.”,有的话,“.”前面是谁this就是谁,没有的话并且是在非严格模式下this就是window,严格模式下是undefined:
1 | function fn() { |
- 构造函数执行(也即是new执行),函数中的this是当前类的实例:
1 | function F() { |
- 箭头函数中没有this,所用到的this都是其上下文中的this(或者说是上级上下文):
1 | let obj = { |
- 基于call/apply/bind可以改变函数中this的指向:
1 | let obj = { |
本文作者:
ionluo
本文链接: http://www.ionluo.cn/blog/posts/6121effd.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: http://www.ionluo.cn/blog/posts/6121effd.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!