美文网首页
前端JS面试技巧-第二章JS基础

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

作者: 吕阳 | 来源:发表于2018-01-15 13:40 被阅读58次

    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

    相关文章

      网友评论

          本文标题:前端JS面试技巧-第二章JS基础

          本文链接:https://www.haomeiwen.com/subject/tcuroxtx.html