Javascript 知识点核心重点

一、变量类型

1、js的数据类型

基本数据类型:undefined、null、Boolean、string、number、symbol(es6新增,表独一无二的值)

引用数据类型:数组、对象、函数。(统称为object对象)

题目:基本类型和引用类型的区别?

在参数传递方式上,有所不同:简单类型参数传递的是值,引用类型传递的是地址。


上述代码中,a b都是值类型,两者分别修改赋值,相互之间没有任何影响。

2.数据类型的判断

1)typeof:返回一个表示数据类型的字符串,返回结果包括:number、string、boolean、object、undefined、function、symbol等七种数据类型,但不能判断null、array等。

2)instanceof:是用来判断A是否为B的实例,表达式为:A instanceof B,如果A是B的实例,则返回true,否则返回false。instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性,但它不能检测null 和 undefined

3)constructor

constructor作用和instanceof非常相似。但constructor检测 Object与instanceof不一样,还可以处理基本数据类型的检测。不过函数的 constructor 是不稳定的,这个主要体现在把类的原型进行重写,在重写的过程中很有可能出现把之前的constructor给覆盖了,这样检测出来的结果就是不准确的。

4)Object.prototype.toString.call()

Object.prototype.toString.call() 是最准确最常用的方式。

3.浅拷贝与深拷贝

浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。             

深拷贝就是在拷贝的同时,将数据的所有引用结构都拷贝一份。

二、作用域和闭包

1、作用域和作用域链

2、闭包是什么:

闭包的作用:使用闭包可以访问函数中的变量。可以使变量长期保存在内存中,生命周期比较长。

闭包主要有两个应用场景:函数作为参数传递。函数作为返回值。

三、异步

1.同步 vs 异步

同步,我的理解是一种线性执行的方式,执行的流程不能跨越。                               

异步,是一种并行处理的方式,不必等待一个程序执行完,可以执行其它的任务。

2.Event Loop (事件循环)

四、原型链与继承

1.原型和原型链

原型:在JavaScript中原型是一个prototype对象,用于表示类型之间的关系。 

原型链:对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,专业术语称之为原型链。 

2.继承(六种继承方式)

1、原型链+借用构造函数的组合继承                                                                                                以上继承的方式核心是在子类的构造函数中通过 Parent.call(this) 继承父类的属性,然后改变子类的原型为 newParent() 来继承父类的函数。

2、寄生组合继承:这种继承方式对上一种组合继承进行了优化。继承实现的核心就是将父类的原型赋值给了子类,并且将构造函数设置为子类,这样既解决了无用的父类属性问题,还能正确的找到子类的构造函数。

3、ES6中class 的继承:class可以通过extends关键字实现继承,还可以通过static关键字定义类的静态方法。class关键字只是原型的语法糖,JavaScript继承仍然是基于原型实现的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容