ES6

前端JavaScript面试技巧

2019-03-10  本文已影响156人  六个周
先看几道面试题:
1、JS中使用typeof能得到哪些类型。//JS变量类型
2、何时使用“==”、“===”。//强制类型转换
3、window.onload和DOMContentLoaded的区别。//浏览器渲染过程
4、用JS创建10个a标签,点击的时候弹出对应的序号。//作用域
5、简述如何实现一个模块加载器,实现类型require.js的功能。//JS模块化
6、实现数组的随机排序。//JS基础算法

1.变量类型和计算

题目:

1、JS中使用typeof能得到哪些类型
2、何时使用“==”、“===”。
3、JS中有哪些内置函数
4、JS变量按照存储方式区分为哪些类型,并描述其特点.
5、如何理解JSON

知识点:

变量类型、变量计算

变量类型
  • 值类型 vs 引用类型
  • typeof 运算符详解

2.原型和原型链

题目:

1、如何准备判断一个变量是数组类型
2、写一个原型链继承的例子
3、描述new一个对象的过程
4、zepto(或其它框架)源码中如何使用原型链

知识点:

  • 构造函数
  • 构造函数 - 扩展
  • 原型规则和示例
  • 原型链
  • instanceof

详细知识点

原型规则和示例

  • 所有的引用类型(数组、对象、函数),都具有对象的特性,即可以自己扩展属性(除了“null”以外)。
  • 所有的引用类型(数组、对象、函数),都有一个__proto__属性,属性值是一个普通的对象。(隐式原型)。
  • 所有的函数,都有一个prototype属性,属性值也是一个普通的对象。(显示原型)。
  • 所有的引用类型(数组、对象、函数),__proto__属性值指向它的构造函数的“prototype”属性值。
  • 当试图得到一个对象的某个属性时,如果这么对象本身没有这个属性,那么去它的__proto__(即它的构造函数的prototype)中寻找。

写一个贴近实际开发原型链继承的例子

function Elem(id) {
this.elem = document.getElementById(id);
}

Elem.prototype.html =function(val){
  var elem = this.elem
  if(val){
    elem.innerHTML =val
}else{
    return elem.innerHTML
}
}

Elem.prototype.on = function(type,fn){
    var elem = this.elem
    elem.addEventListener(type, fn)
}

var div1 = new Elem('div1')
//console.log(div1.html())
div.html("<p>Hello Lmz</p>")
div1.on('click',function(){
    alert("clicked");
})

3. 作用域与闭包

题目

  • 说一下对变量提升的理解。//变量定义、函数声明
  • 说明this几种不同的使用场景。//作为构造函数、对象属性、普通函数、call apply bind
  • 用JS创建10个a标签,点击的时候弹出对应的序号。
  • 如何理解作用域
  • 实际开发中闭包的应用

知识点

  • 执行上下文
  • this:执行时确认,定义时无法确认
  • 作用域
  • 作用域链
  • 闭包

...

上一篇 下一篇

猜你喜欢

热点阅读