2019-07-20 前端面试之道

一、Js方面的知识点

内置类型

js中有7种内置类型:分为两大类型:

1、基本类型

基本类型:number、string、Boolean、undefined、null、symbol

js中的数字类型都是浮点类型没有整型。

例子:

Var a = 1.1

Var b = 2.2

Console.log(a+b) 结果为3.300000000003 这就是浮点型

解决浮点型的方法:

2、对象

对象:object是引用类型,在使用过程中会遇到浅拷贝和深拷贝的问题?

什么是浅拷贝什么是深拷贝?区别(在于是否真正获取一个对象复制实体,而不是引用)

浅拷贝:只是增加了一个指针,指向已存在的内存地址

方法:var newobject = $extend{(),oldobject}

深拷贝:增加了一个指针并且申请了一个新的内存,这个指针就指向这个新的内存。

方法:var newobject = $extend{true,(),oldobject}

扩展:

如果想获得一个变量的正确类型可以使用:object.Prototype.toString.call()这样就可以获得[object type]的字符串

扩展:

例子:Let  a ;打印a的结果为undefined,但undefined不是保留字,在低版本会被赋值。如Let undefined = 1,使用上面就会打印出错。

解决方法

a===void 0 结果为undefined

3、四则运算

只有当加法运算时,其中一方为字符串类型,就会把另外的一方转换为字符串,其他的运算只要其中一方是数字,那么另外一个就是数字。

例子:

Var a = 1

Var b = ‘5’

Var c = ‘3’

Alert(a+b-c) 结果为:12即15-3 = 12

[1,2]+[3,4]//结果为‘1,23,4’

[] = [] 结果为false

原因:两边都为引用数据类型,==是直接比较两边的数据,结果为false。

因为[]问引用类型,两个[]分别指向不同的堆内存,所以数据不同返回值为false。

[]==![] 结果为true

原因:

①:[]是对象,比较过程依靠=》Toprimitive([])==false比较,

②:toprimitive默认调用的是toString这个方法,于是toprimitive([])就等于一个空字符串

③:空字符串==false,然后Tonumber(‘’)==0,即0==0,结果为true

4、原型及原型链

每个函数都有一个prototype属性,除了function.Prototype.bind(),改属性指向原型。

每个对象都有一个_proto_属性,指向了创建该对象的构造函数的原型

一直到object.prototype原型对象终止,原型链结束

5、new

新生成了一个对象

链接到原型

绑定 this

返回新对象

你可能感兴趣的:(2019-07-20 前端面试之道)