One Hundred Years of Solitude

没有华丽的言语,只有内心的澎湃.

JavaScript基础相关

JavaScript的数据类型有哪些?如何区分?

答:基本类型:String、Number、Boolean、Symbol、Undefined、Null ,引用类型:Object.
(Symbol 是 ES6 新增的一种原始数据类型,它的字面意思是:符号、标记。代表独一无二的值 。)
常用的区分方法是typeof(),严格区分可以用Object.prototype.toString.call()

JavaScript的继承有几种?

1.原型链继承
缺点:创建子类型的实例时,不能向父类的构造函数中传递参数

2.借用构造函数继承/伪造对象继承/经典继承
缺点:方法都在函数中定义,无法函数复用,并且在父类的原型中定义的方法,对子类也是不可见的

3.组合继承

4.原型式继承

5.寄生式继承

6.寄生组合式继承

原型链?原型?

1、prototype和__proto__的区别

《JavaScript基础相关》

2、__proto__属性指向谁

《JavaScript基础相关》

三、什么是原型链

《JavaScript基础相关》

为什么不会去自身的prototype属性上查找,这叫“属性屏蔽”

原型

什么是面向对象编程(OOP)?

简单来说,面向对象编程就是将你的需求抽象成一个对象,然后对这个对象进行分析,为其添加对应的特征(属性)与行为(方法),我们将这个对象称之为 类。

什么是继承?

子类继承父类的属性和方法,同时也可以增加子类自己的属性喝方法,也可以改写或覆盖继承到的属性和方法,继承的优势:代码的抽象和代码的复用

谈谈闭包?

闭包的概念:闭包就是能够读取其他函数内部变量的函数。

闭包的用途:1.可以读取函数内部的变量;2.让这些变量的值始终保持在内存中。3.防止变量被污染

使用闭包的缺点:
1.由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,
否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
2.闭包会在父函数外部,改变父函数内部变量的值。

事件流?

事件流的3个阶段:
1.捕获阶段
2.目标阶段
3.冒泡阶段

防抖节流

防抖 debounce

节流 throttle

拖拽

ajax

浅拷贝

深拷贝

promise的回调函数执行时间和定时器的函数执行时间

js代码执行会生产一个执行上下文环境,首先会预解析,遇到var function 以及参数都会再次预解析,
初始值都是undefined,预解析完毕,开始从上到下开始执行,
遇到定时器直接加到任务队列,接着遇到Promise实例化,就会直接执行实例化里面的代码首先打印出2,然后遇到Promise实例的回调函数then(),
这个其实就是微任务 微任务追加到本轮事件循环 ,然后再遇到console.log(4),直接打印出4,
然后再取出微任务的then(),执行打印出3,最后取出定时器,执行打印出1,
打印顺序:2431

说一下CSS盒模型

CSS盒模型包括内容、内边距,边框,外边距,
CSS盒模型又分为 W3C 标准盒模型 和 IE 怪异盒模型,
两则的区别是:
标准模型的宽高为content的宽高
IE模型的宽高包括border
通过设置:
标准模型:box-sizing:content-box
IE模型:box-sizing:border-box,
来转换一些常见的应用场景.

怎样让一个元素水平垂直居中

1.万能居中法,这个元素的定位设置为绝对定位,top,bottom,left,right都设置成0,margin设置为auto即可
2.伸缩盒子flex,这个元素的父元素转换成flex,justify-content设置为center,align-items设置为center即可.
3.元素设置为绝对定位,left设置为50%,top设置为50%,再设置transform为translate(-50%,-50%)即可

知道什么是同源策略吗

同协议同主机同端口,是一个安全策略

那怎么解决跨域问题

CORS 和 JSONP,或者后端设置代理

JSONP 原理

HTML 页面中在通过相应的标签从不同域名下加载静态资源,而被浏览器允许,
基于此原理,可以通过动态创建script,再请求一个带参网址实现跨域通信

重绘和重排的区别

重绘不一定需要重排,重排必然导致重绘

点赞

发表评论

电子邮件地址不会被公开。