js常见面试题(二)
原型和原型链
原型链:当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。
原型:1.所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象
2.所有函数都有一个prototype(原型)属性,属性值是一个普通的对象
3.所有引用类型的__proto__属性指向它构造函数的prototypeprototype与__proto__的关系与区别
继承的实现方式及比较
(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);深拷贝与浅拷贝
深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。
方法:object assign({},obj);
Array.prototype.concat()3
Array.prototype.slice()
深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。
方法:JSON.parse(JSON.stringifty()) //JSON.stringify将对象转化为JSON字符串防抖和节流
防抖:对于短时间内连续触发的事件(上面的滚动事件),防抖的含义就是让某个时间期限(如上面的1000毫秒)内,事件处理函数只执行一次。
效果:如果短时间内大量触发同一事件,只会执行一次函数
实现:用seTimeout函数和一个变量用于保存计时,为了保护全局部纯净可以借助闭包实现
节流:
效果:如果短时间内大量触发同一事件,那么在函数执行一次之后,该函数在指定的时间期限内不再工作,直至过了这段时间才重新生效。作用域和作用域链、执行期上下文
上下文(context)是用来指定代码某些特定部分中this的值
作用域(scope) 是指变量的可访问性,上下文(context)是指this在同一作用域内的值
上下文始终坚持一个原理:this永远指向最后调用它的那个对象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常见面试题(二)相关推荐
- Node.js常见面试题
Node.js常见面试题 1.NodeJS中的this为什么是一个空对象? 2.NodeJS中为什么可以直接使用exports.require.module.__filename.__dirname? ...
- vue.js 常见面试题_使用Vue.js时应避免的常见错误
vue.js 常见面试题 Looking for a front-end framework to try out, I started with React and then tried Vue.j ...
- JS 常见面试题 - 事件循环机制
一.浏览器JS异步执行的原理 一般常说js是一门单线程语言,那为什么可以异步执行且不发生阻塞呢? 常说的JS是单线程语言,是因为执行JS的引擎是单线程的,而浏览器本身是多线程的 浏览器主要含有: js ...
- js常见面试题及简单回答
一 h5新特性: 1, 新增了语义化标签 header,footer,article,aside,section,nav,hgroup,time,main等 2,新增表单控件 email,tel,ur ...
- MySQL数据库常见面试题二(传智专修学院2017级java4班)
1. 在数据库中你怎么把时间进行格式化 例如使用 DATE_FORMAT(time,'%Y-%m-%d') 2. 如果左连接表中 左表有1条数据 右表有4条匹配的数据 结果是怎样的 右表展示4条匹配数 ...
- 链表常见面试题二:约瑟夫环
面试题1:约瑟夫环 约瑟夫环故事背景: 著名犹太历史学家 Josephus有过以下的故事: 在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中, 39个犹太人决定宁愿死也不 ...
- python自动化测试常见面试题二_思考|自动化测试面试题第二波
本内容为企业面试关于自动化测试的考题,大家可以自己思考下如何作答,欢迎把答案留言到本文下方哦. 问题1:设计接口测试⽤用例例时,涉及的是电商系统,其中包括很多修改,如商品.商家.店铺等等,针对这些数据 ...
- 深度学习试题_深度学习理论类常见面试题(二)
8.Attention 对比 RNN 和 CNN,分别有哪点你觉得的优势 对比 RNN 的是,RNN 是基于马尔可夫决策过程,决策链路太短,且单向 对比 CNN 的是,CNN 基于的是窗口式捕捉,没有 ...
- 使用原生JS求一段字符串出现最多的次数和最少的次数,最大值和最小值(JS常见面试题)
直接看代码(一把梭也可以): let strings = 'aqqwwqqaaasddvvccxxxx..........' let obj = {}; for (let i = 0; i < ...
最新文章
- 无需重启, 使用Xephyr调试awesome
- GridView强制换行与自动换行
- iou iof matrix_iof
- Set Up a Mobile Worker
- Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述
- 小小树微博制作记录笔记(一)
- 矩形波的傅里叶变换_冲激信号、门信号、方波、矩形波的傅里叶变换总结
- Java Bullshifier –生成大量随机代码库
- I - Defeat the Enemy UVALive - 7146 二分 + 贪心
- 诗与远方:无题(二十)
- java lampo整车,lampo
- oracle下载安装教程
- GMP与ISO9000有何区别?(转载)
- 内网通手动修改积分_WooCommerce微信小程序2.9.4版本发布 拼团积分购适配可变产品 微信搜索推送...
- 00截断上传绕过_Getshell | 文件上传绕过整理
- underscore.js 964 --- 1103行
- hdu6287(分解质因数+二分)
- spring-cloud-context源码解读
- 外汇天眼:央行人民币降息意味着什么?有什么影响?
- POJ 3009 Curling 2.0-DFS
热门文章
- B站怎么下载视频中的音乐(不用辅助工具)
- 罗马音平假字复制_罗马音平假名和片假名大全
- 命运冠位指定服务器选择,命运冠位指定从者选择技巧 fgo从者哪个最好
- FPGA知识点汇总(verilog、数字电路、时序分析、跨时钟域、亚稳态)
- UI灵感分析笔记#3(22.1.2)
- EXFO 730C光时域反射计只有iOLM光眼升级OTDR(开通otdr权限)
- 在 ionic 项目中使用(迁移) capacitor
- ios swift UIActivityIndicatorView 菊花 加载中...
- 【参考】bike+需求影响
- win10中chrome浏览器书签路径