美文网首页
js常见面试题2

js常见面试题2

作者: 风雪之隅_b6f7 | 来源:发表于2019-04-10 16:37 被阅读0次

    ####DOM操作

      - 1)创建新节点

        - createDocumentFragment()  //创建dom片段

        - createElement()  //创建元素

        - createTextNode() //创建文本节点

      - 2) 添加 / 移除 /替换/插入

        - appendChild()

        - removeChild()

        - replaceChild()

        - insertBefore()

      - 3) 查询元素

        - getElementsByTagName()

        - getElementById()

        - getElementByName()

    ###js数据类型

        基本数据类型:number、string、null、undefined、boolean、symbol -- 栈

      - 原始数据类型是直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据;

        引用数据类型:object、array、function -- 堆

      - 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;

    ###js内置对象

      - 数据封装类对象:Object、String、Number、Boolean、Array

      - 其他对象:Function、Data、Math、Arguments、RegExp、Error

      - ES6新增对象:Promise、Proxy、Map、Set、Symbol、Reflect

    ###eval

      - 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

        而且非常耗能(执行两次,一次解析成JS代码,一次执行)

        <!-- <script type="text/javascript">

          eval("x=10;y=20;document.write(x*y)")

          document.write(eval("2+2"))

          var x=10

          document.write(eval(x+17))

        </script> -->

    ###对闭包的理解

    链接见 https://www.cnblogs.com/cxying93/p/6103375.html

      - 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数里创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用域链,将函数内部的变量和方法传递到外部

      函数内部可以直接读取全局变量,但是在函数外部无法读取函数内部的局部变量。注意点:在函数内部声明变量的时候,一定要使用var命令这就是Javascript语言特有的"链式作用域"结构(chain scope),在下面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。下面代码中的f2函数,就是闭包;

      闭包的用途:

      一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在f1调用后被自动清除。

      <!-- function f1(){

        var n=999;

        function f2(){

          alert(n); // 999

        }

      } -->

    ###http状态码

    https://blog.csdn.net/sinat_17775997/article/details/82111432

    ###介绍JavaScript的原型、原型链?有啥特点

    原型:

    JavaScript的所有对象中都包含了一个 (__proto__ ) 内部属性,这个属性所对应的就是该对象的原型

    JavaScript的函数对象,除了原型 (__proto__) 之外,还预置了 prototype 属性

    当函数对象作为构造函数创建实例时,该 prototype 属性值将被作为实例对象的原型( __proto__)。

    原型链:

    当一个对象调用的属性/方法自身不存在时,就会去自己(__proto__ )关联的前辈 prototype 对象上去找

    如果没找到,就会去该 prototype 原型 ( __proto__) 关联的前辈 prototype 去找。依次类推,直到找到属性/方法或 undefined 为止。从而形成了所谓的“原型链”

    原型特点:

    JavaScript对象是通过引用来传递的,当修改原型时,与之相关的对象也会继承这一改变

    ###JavaScript如何实现继承

      - 构造函数绑定:使用 call 或 apply 方法,将父对象的构造函数绑定在子对象上

      - es6使用extends来继承

      ###在一个DOM上同时绑定两个点击事件:一个用捕获,一个用冒泡。事件会执行几次,先执行冒泡还是捕获

      - 该DOM上的事件如果被触发,会执行两次(执行次数等于绑定次数)

      - 如果该DOM是目标元素,则按事件绑定顺序执行,不区分冒泡/捕获

      - 如果该DOM是处于事件流中的非目标元素,则先执行捕获,后执行冒泡

    ###事件的代理/委托

      - 事件委托是指将事件绑定目标元素的到父元素上,利用冒泡机制触发该事件

        优点:

        可以减少事件注册,节省大量内存占用

        可以将事件应用于动态添加的子元素上

        缺点:

        使用不当会造成事件在不应该触发时触发

    ###列举一下JavaScript数组和对象有哪些原生方法?

    arr.concat/push/pop/unshift/shift/join/reverse/slice/splice/indexOf/includes

    object.hasOwnProperty/valueOf/toString/toLocaleString

    相关文章

      网友评论

          本文标题:js常见面试题2

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