1. 原型和原型链
    原型链:当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。
    原型:1.所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象
    2.所有函数都有一个prototype(原型)属性,属性值是一个普通的对象
    3.所有引用类型的__proto__属性指向它构造函数的prototype

  2. prototype与__proto__的关系与区别

  3. 继承的实现方式及比较
    (1)默认的原型继承-构造函数原型中添加属性
    (2)覆盖构造函数的原型 //会导致之前的constructor丢失,若构造函数中的这个属性很重要最好手动mowei添加指回原构造函数Fn.prototype.constructor=Fn;
    (3)原型混入
    (4)构造函数属性继承
    function Person(name,age){
    this.name = name;
    this.age = age;
    }
    function Man(name,age){
    Person.call(this,name,age);
    }
    var man1 = new Man(“Mike”,2);
    console.log(man1);

  4. 深拷贝与浅拷贝
    深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。
    浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。
    方法:object assign({},obj);
    Array.prototype.concat()3
    Array.prototype.slice()
    深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。
    方法:JSON.parse(JSON.stringifty()) //JSON.stringify将对象转化为JSON字符串

  5. 防抖和节流
    防抖:对于短时间内连续触发的事件(上面的滚动事件),防抖的含义就是让某个时间期限(如上面的1000毫秒)内,事件处理函数只执行一次。
    效果:如果短时间内大量触发同一事件,只会执行一次函数
    实现:用seTimeout函数和一个变量用于保存计时,为了保护全局部纯净可以借助闭包实现
    节流:
    效果:如果短时间内大量触发同一事件,那么在函数执行一次之后,该函数在指定的时间期限内不再工作,直至过了这段时间才重新生效。

  6. 作用域和作用域链、执行期上下文
    上下文(context)是用来指定代码某些特定部分中this的值
    作用域(scope) 是指变量的可访问性,上下文(context)是指this在同一作用域内的值
     上下文始终坚持一个原理:this永远指向最后调用它的那个对象

  7. DOM常见的操作方式
    1)节点属性
    Node.nodeName //返回节点名称,只读
    Node.nodeType //返回节点类型的常数值,只读
    Node.nodeValue //返回Text或Comment节点的文本值,只读
    Node.textContent //返回当前节点和它的所有后代节点的文本内容,可读写
    Node.baseURI //返回当前网页的绝对路径

    Node.ownerDocument  //返回当前节点所在的顶层文档对象,即document
    Node.nextSibling  //返回紧跟在当前节点后面的第一个兄弟节点
    Node.previousSibling  //返回当前节点前面的、距离最近的一个兄弟节点
    Node.parentNode   //返回当前节点的父节点
    Node.parentElement  //返回当前节点的父Element节点
    Node.childNodes   //返回当前节点的所有子节点
    Node.firstChild  //返回当前节点的第一个子节点
    Node.lastChild   //返回当前节点的最后一个子节点//parentNode接口
    Node.children  //返回指定节点的所有Element子节点
    Node.firstElementChild  //返回当前节点的第一个Element子节点
    Node.lastElementChild   //返回当前节点的最后一个Element子节点
    Node.childElementCount  //返回当前节点所有Element子节点的数目。
    

    2)操作
    Node.appendChild(node) //向节点添加最后一个子节点
    Node.hasChildNodes() //返回布尔值,表示当前节点是否有子节点
    Node.cloneNode(true); // 默认为false(克隆节点), true(克隆节点及其属性,以及后代)
    Node.insertBefore(newNode,oldNode) // 在指定子节点之前插入新的子节点
    Node.removeChild(node) //删除节点,在要删除节点的父节点上操作
    Node.replaceChild(newChild,oldChild) //替换节点
    Node.contains(node) //返回一个布尔值,表示参数节点是否为当前节点的后代节点。
    Node.compareDocumentPosition(node) //返回一个7个比特位的二进制值,表示参数节点和当前节点的关系
    Node.isEqualNode(noe) //返回布尔值,用于检查两个节点是否相等。所谓相等的节点,指的是两个节点的类型相同、属性相同、子节点相同。
    Node.normalize() //用于清理当前节点内部的所有Text节点。它会去除空的文本节点,并且将毗邻的文本节点合并成一个。

    //ChildNode接口
    Node.remove()  //用于删除当前节点
    Node.before()  //
    Node.after()
    Node.replaceWith()
    

js常见面试题(二)相关推荐

  1. Node.js常见面试题

    Node.js常见面试题 1.NodeJS中的this为什么是一个空对象? 2.NodeJS中为什么可以直接使用exports.require.module.__filename.__dirname? ...

  2. vue.js 常见面试题_使用Vue.js时应避免的常见错误

    vue.js 常见面试题 Looking for a front-end framework to try out, I started with React and then tried Vue.j ...

  3. JS 常见面试题 - 事件循环机制

    一.浏览器JS异步执行的原理 一般常说js是一门单线程语言,那为什么可以异步执行且不发生阻塞呢? 常说的JS是单线程语言,是因为执行JS的引擎是单线程的,而浏览器本身是多线程的 浏览器主要含有: js ...

  4. js常见面试题及简单回答

    一 h5新特性: 1, 新增了语义化标签 header,footer,article,aside,section,nav,hgroup,time,main等 2,新增表单控件 email,tel,ur ...

  5. MySQL数据库常见面试题二(传智专修学院2017级java4班)

    1. 在数据库中你怎么把时间进行格式化 例如使用 DATE_FORMAT(time,'%Y-%m-%d') 2. 如果左连接表中 左表有1条数据 右表有4条匹配的数据 结果是怎样的 右表展示4条匹配数 ...

  6. 链表常见面试题二:约瑟夫环

    面试题1:约瑟夫环 约瑟夫环故事背景: 著名犹太历史学家 Josephus有过以下的故事: 在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中, 39个犹太人决定宁愿死也不 ...

  7. python自动化测试常见面试题二_思考|自动化测试面试题第二波

    本内容为企业面试关于自动化测试的考题,大家可以自己思考下如何作答,欢迎把答案留言到本文下方哦. 问题1:设计接口测试⽤用例例时,涉及的是电商系统,其中包括很多修改,如商品.商家.店铺等等,针对这些数据 ...

  8. 深度学习试题_深度学习理论类常见面试题(二)

    8.Attention 对比 RNN 和 CNN,分别有哪点你觉得的优势 对比 RNN 的是,RNN 是基于马尔可夫决策过程,决策链路太短,且单向 对比 CNN 的是,CNN 基于的是窗口式捕捉,没有 ...

  9. 使用原生JS求一段字符串出现最多的次数和最少的次数,最大值和最小值(JS常见面试题)

    直接看代码(一把梭也可以): let strings = 'aqqwwqqaaasddvvccxxxx..........' let obj = {}; for (let i = 0; i < ...

最新文章

  1. 无需重启, 使用Xephyr调试awesome
  2. GridView强制换行与自动换行
  3. iou iof matrix_iof
  4. Set Up a Mobile Worker
  5. Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述
  6. 小小树微博制作记录笔记(一)
  7. 矩形波的傅里叶变换_冲激信号、门信号、方波、矩形波的傅里叶变换总结
  8. Java Bullshifier –生成大量随机代码库
  9. I - Defeat the Enemy UVALive - 7146 二分 + 贪心
  10. 诗与远方:无题(二十)
  11. java lampo整车,lampo
  12. oracle下载安装教程
  13. GMP与ISO9000有何区别?(转载)
  14. 内网通手动修改积分_WooCommerce微信小程序2.9.4版本发布 拼团积分购适配可变产品 微信搜索推送...
  15. 00截断上传绕过_Getshell | 文件上传绕过整理
  16. underscore.js 964 --- 1103行
  17. hdu6287(分解质因数+二分)
  18. spring-cloud-context源码解读
  19. 外汇天眼:央行人民币降息意味着什么?有什么影响?
  20. POJ 3009 Curling 2.0-DFS

热门文章

  1. B站怎么下载视频中的音乐(不用辅助工具)
  2. 罗马音平假字复制_罗马音平假名和片假名大全
  3. 命运冠位指定服务器选择,命运冠位指定从者选择技巧 fgo从者哪个最好
  4. FPGA知识点汇总(verilog、数字电路、时序分析、跨时钟域、亚稳态)
  5. UI灵感分析笔记#3(22.1.2)
  6. EXFO 730C光时域反射计只有iOLM光眼升级OTDR(开通otdr权限)
  7. 在 ionic 项目中使用(迁移) capacitor
  8. ios swift UIActivityIndicatorView 菊花 加载中...
  9. 【参考】bike+需求影响
  10. win10中chrome浏览器书签路径