美文网首页
vue面试题第九天

vue面试题第九天

作者: Wxq_59f9 | 来源:发表于2019-12-01 20:28 被阅读0次

1实现一个clone函数

在JavaScript的世界里, 数据被定义为以下 7 种数据类型:

6种 原始类型(又叫 基本类型):

Boolean

Null

Undefined

Number

String

Symbol

和 Object

(需要注意的是, 名词从英文翻译成中文,可能会出现多种叫法,比如“primitive type”,中文叫 “原始类型”,也有叫“基本类型”.)

另外,根据变量值传递的方式,我们又可以将数据区分为“值类型”和“引用类型”.

值类型 : 数据在传递和赋值时,数据将自己复制一份给对方.

JavaScript中原始类型都属于值类型(string, number, boolean, null, undefined, symbol).

引用类型 : 在传递和赋值时, 数据将自身的引用(又叫“地址”、“指针”)给对方.

JavaScript中数组、函数、自定义对象,三种属于引用类型.

实现

引用类型数据都是由原始类型数据组成的,因此我们可以将引用类型数据一层层往下拆, 将里面的每一个原始类型数据赋值给新对象.

#1: 判断传入的对象是数组类型的对象,还是其它类型的对象.

#2、#3: Array 和 Object 的 typeof是 “object”, Function 的typeof 是“function”. 它们都是引用类型

#4: 原始类型直接赋值.

#5: 创建一个新的函数,并且将新函数与 copy 对象绑定.

2:浏览器是如何渲染页面得

1. 浏览器下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。

2. 在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都已经下载完)。

3. 如果遇到语义解释性的标签嵌入文件(JS脚本,CSS样式),那么此时IE的下载过程会启用单独连接进行下载。

4. 并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载。

5. 样式表在下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素(含以前已经渲染的)重新进行渲染。

6. JS、CSS中如有重定义,后定义函数将覆盖前定义函数。

3call,apply,bind方法得作用分别是什么


1.作用

改变this的指向

在js中,所有的函数再被调用的时候都会默认传入两个参数,一个是this,还有一个是arguments。在默认情况下this都是指当前调用函数的对象。但是有时候我们需要改变this的指向,也就是说使函数可以被其他对象来调用,那么我们应该怎样做呢?这时候我们就可以使用call,apply和bind方法了。

2.首先搞清楚call,apply和bind方法的来历

在js中所有的函数都是Function的实例,而且对于Function来说,它的原型即Function.prototype中含有很多东西,其中call,apply和bind方法就是Function原型中的方法,所以根据原型的规则,所有的函数都可以使用原型中属性和方法,所以来说,对于所有的函数都可以使用call,apply和bind方法。

简单一句话:call,apply和bind都是Function原型中的方法,而所有的函数都是Function的实例。

3.三者的异同

1.call,bind,apply这三个函数的第一个参数都是this的指向对象,直到第二个参数差别就出来了。

2.call的参数是直接放进去的,直接用逗号分离;

3.apply的所有参数都必须放在一个数组里面传进去;

4.bind除了返回是函数以外,它的参数和call的放入方式一样。

5.它们三者的参数不限定是string类型,允许是各种类型,包括函数、对象等等。

相关文章

网友评论

      本文标题:vue面试题第九天

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