前端JS面试技巧-第二章JS基础

2-1变量类型和计算

  • 题目
  • 知识点
  • 解答
题目
  • JS中使用typeof能得到那些类型
  • 何时使用 === 何时使用 ==
  • JS中有那些内置函数
  • JS变量按照存储方式区分为那些类型,并描述其特点
  • 如何理解JSON
知识点
  • 变量类型
  1. 值类型vs引用类型
  • 值类型 number bealoon
var log = function() {
    console.log.apply(console, arguments)
}



var a = 100
var b = a
a = 200
log('b',b)
//结果 b 100
  • 引用类型 对象,数组,函数,
var a = {age: 20}
var b = a
b.age = 21
log('a.age',a.age)
// a.age 21

值类型存值,引用类型存引用的地址
事例二a,b指向一处.

  1. typeof 运算符详解
typeof undefined
typeof 'abc'
typeof 123
typeof true
typeof {}
typeof []
typeof null
typeof console.log()
  • 值类型,都能区分.

  • 引用类型,只能区分函数.

  • 变量计算-强制类型转换

  1. 字符串拼接
var a = 100 + 10
log('a', a)
var b = 100 + '10'
log('b', b)

b转换成了字符串

  1. == 运算符
100 == '100'
0 == ''
null = underfined
  • 全是true
    第一个100转字符串
    第二第三全转false
  • 换===就不会出现这问题
  1. if语句
var a = true
if (a) {
}
var b = 100
if(b){
}
var c = ''
if (c){
}
  • b转true
  • c 转false
  1. 逻辑运算
  • 何时使用 === 何时使用 ==
微信截图_20180115120029.png
  • 其他都三等.

  • 内置函数--数据封装类对象

Object
Array
Boolean
Number
String
Function
Date
RegExp
Error
  • 如何理解JSON
  • JSON只不过是一个JS对象,数据存储格式
JSON.stringify({a:10,b:20}) 对象转字符串
JSON.parse('{"a":10,"b":20}') 字符串转对象

2-5 原型和原型链

题目
  • 如何准备判断一个变量是数组类型
  • 写一个原型链继承的例子
  • 描述new一个对象的过程
  • zepto(或者其他框架)源码中如何使用原型链
知识点
  • 构造函数
  • 原型规则和示例
  • 原型链

  • 构造函数


    微信截图_20180115121649.png
  • 构造函数-扩展

  • var a = {} 其实是 var a = new Object()的语法糖

  • var a = [] 其实是 var a = new Array() 的语法糖

  • function Foo(){}其实是var Foo = new Function()

  • 使用instanceof 判断一个函数是否是一个函数的构造函数

判断变量是否为数组 变量 instanceof Array


原型规则和示例
  • 5条原型规则
  • 原型规则是学习原型链的基础
  1. 所有的引用类型(数组,对象,函数), 都具有对象特性,既可以自由扩展属性(除null以外)
  2. 所有的引用类型(数组,对象,函数),都有一个proto属性,属性是一个普通的对象.
  3. 所有的函数,都有一个prototype属性,属性值也是一个普通的对象
  4. 所有的引用类型,proto属性值指向它的构造函数的"prototype"属性值
  5. 当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么回去他的proto(即他的构造函数的prototype)中寻找.
    微信截图_20180115130457.png

本身没有就去隐士原型中找.

微信截图_20180115131322.png

解题

  • 如何准备判断一个变量是数组类型
var arr = []
arr instanceof Array //true
  • 写一个原型链继承的例子
  • 正式答案 封装DOM查询

function Animal()
{
      this.eat = function(){
            console.log('animal eat')
}
}

function Dog(){
        this.bark = function(){
        console.log('dog bark')
}
}
Dog.prototype = new Animal()

var hashiqi = new Dog()


  • 描述new一个对象的过程
  1. 创建一个新对象
  2. this指向这个新对象
  3. 执行代码,即对this赋值
  4. 返回this
  • zepto(或者其他框架)源码中如何使用原型链

再看一遍 2-12 ,写下elemt

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容