0
点赞
收藏
分享

微信扫一扫

简单说一下JS

紫荆峰 2022-03-17 阅读 57
原型模式

闭包:

闭包通俗来说就是可以在函数外部访问到函数内部的变量。

正常情况下函数外部是访问不到函数内部作用域变量的。

优点:可以隔离作用域,不造成全局污染。

缺点:长期驻留内存,会导致内存泄漏。

如何解决内存泄漏:将暴露外部的闭包变量设置为null。

适用场景:在性能优化的过程中,使用防抖节流,导航栏获取下标使用。

原型链的理解:

主要涉及两点:_proto_,prototype。

__proto__:__proto__指向该对象所在的构造函数的原型对象。

prototype:Person()构造函数的prototype属性是一个对象。

Js的继承:

一、原型链继承,prototype。

二、借用构造函数继承,call或者apply的方式。

三、组合继承,通过以上一条进行合并继承。

es6继承:

通过class来定义类,在用extends来继承类,用super()表示父类。

Js原型事件绑定:

绑定事件已知三种:

1、html事件 :现如今已经不常用,缺点就是不好维护,因为散落在标签中,也就是耦合度太高。

2、DOM0事件:目前常用于pc端用于绑定方式,兼容性好,主要是获取dom元素在添加事件。

优点:兼容性好。

缺点:只支持冒泡,不支持捕获。

3、DOM2事件:移动端运用的较多,提供了专门的绑定和移除方法。

优点:支持给元素绑定多个相同事件,支持冒泡和捕获机制。

ES6新增特性:

es6新增特性常用:let/const,箭头函数,模板字符串,解构赋值,模板导入和导出。promise还有数组字符串的新方法。

js设计模式有哪些:

已知有单例模式和观察者模式。

单例模式:

保证一个类只有一个实例,先判断,存在返回,不存在创建再返回,确保一个类只有一个实例对象。

观察者模式:

所作工作就是在解耦,让耦合的双方都依赖于抽象而不是依赖于具体。

Js面相对象的理解:

通过function来模拟类,prototype实现类方法共享,跟其他语言有本质上的不同,自从有了ES6面向对象更像后端语言的实现了,通过class定义类,extends继承父类,其实ES6实现本质是个语法糖。

Js数组常用方法(8个):

push,pop,join,foreach,map,sort,some,every……【还有其他不在一一介绍,记住几个简单的就好了。】

Js数组内置遍历方法有哪些和区别:

forEach:取代了for循环,一般返回值是undefined。

filter:是一个过滤遍历的方法,如果返回条件true,则返回满足条件为true的新数组。

map:map方法主要对数组的复杂逻辑处理时用的多,特别是react中遍历数组,常用到,写法和foreach相似。

some:方法用于只要数组中至少存在一个满足条件的结果,返回值为true,否则为false,写法和foreach相似。

every:方法用于数组中每一项满足条件时,才会返回true,否则是false,同foreach相似。

Js作用域和作用域链:

Js作用域也就是Js识别变量的范围,作用域链也就是Js查找变量的顺序。

作用域:全局作用域,局部作用域,块级作用域。

全局:也就是在window下的变量范围,在任何地方都可以访问。

局部:只在函数内部定义的变量。

块级:简单来说就是const和let在任意代码块中定义的变量都认为是块级作用域中的变量。(注:尽量不要使用全局变量,因为容易导致全局渲染,命名冲突,对bug查找不利

作用域链:就是由内部的作用域往最外部,查找变量的过程形成的链条就是作用域。

JS数据类型有哪些:

基本数据类型:number,string,Boolean,null,undefined,symbol(ES6新增)

复合类型:Object,function。

说一下call,apply,bind区别:

call,apply,bind都是this指向,但使用上略有不同。

call:后面传递的参数是以逗号形式分开。

apply:传递的参数是数据形式。

bind:返回的是一个函数形式,如果要执行在加一个小括号。

举报

相关推荐

0 条评论