美文网首页
作用域,闭包 ,原型链- 面试题

作用域,闭包 ,原型链- 面试题

作者: jrg陈咪咪sunny | 来源:发表于2017-12-06 20:32 被阅读0次

    1.说一下对变量提升的理解?

    考点:执行上下文

    • 变量定义
    • 函数声明(注意和函数表达式的区别)

    2.说明this几种不同的使用场景?

    • 作为构造函数执行
    • 作为对象属性执行
    • 作为普通函数执行
    • call apply bind

    3.创建10个 <a>标签,点击的时候弹出来对应的序号?

    图片.png

    4.如何理解作用域?

    • 自由变量
    • 作用域链,即自由变量的查找
    • 闭包的两个场景

    5.实际开发中闭包的应用?

    图片.png
    • 闭包是做好保密工作,做好接口开发出去,数据源牢牢把控.


      图片.png

    补充:

    1.instanceof用于判断引用类型属于哪个构造函数的方法。

    那么,我们如何准确的判断一个变量是数组类型呢?

    var arr = [];

    arr instanceof Array //结果为true,这样判断

    有的人可能会想到 typeof arr,但typeof是无法判断是否是数组类型的,包括object

    2.原型规则

    1)所有的引用类型(数组、对象、函数)都具有对象特性,即可以自由扩展属性(除了“null”外)

    2)所有的引用类型(数组、对象、函数)都有一个_proto_属性,属性值是一个普通的对象
    

    3)所有的函数,都有一个prototype属性,属性值也是一个普通的对象

    4)所有的引用类型(数组、对象、函数),proto属性值指向它的构造函数的prototype属性值

    5)当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么会去它的proto(即它的构造函数的prototype)中寻找

    所有的引用类型都有一个proto属性,所有的函数都有一个prototype属性

    3.描述new一个对象的过程

    创建一个新的对象
    this指向这个新的对象
    执行代码,即对this赋值
    返回this
    

    4.写一个原型链继承的例子

     1 //一个封装DOM查询的例子
     2 function Elem(id){ 3     this.elem = document.getElementById(id) 4 }
     5 
     6 Elem.prototype.html = function (val) {
     7     var elem = this.elem
     8     if (val) {
     9         elem.innerHTML = val 
    10         return this //链式操作
    11     }else {
    12         return elem.innerHTML 
    13 } 
    14 } 
    15 
    16 Elem.prototype.on = function (type,fn) { 
    17     var elem = this.elem 
    18 elem.addEventListener(type,fn) 
    19     //return this
    20 }
    21 
    22 var div1 = new Elem ('div1') 23 
    24 div1.html('<p>hello 博客园</p>').on('click',function () {
    25     alert('clicked')
    26 })//.html('<p>javacsript</p>')
    

    相关文章

      网友评论

          本文标题:作用域,闭包 ,原型链- 面试题

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