js常见面试题2

####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代码,一次执行)

   

###对闭包的理解

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

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

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

  闭包的用途:

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

 

###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)