简单说一下JS

闭包:

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

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

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

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

如何解决内存泄漏:将暴露外部的闭包变量设置为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:返回的是一个函数形式,如果要执行在加一个小括号。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js的源码非常庞大和复杂,无法在此简单概括。不过,我可以给你一个简单的概述。 Vue.js源码主要分为以下几个部分: 1.编译器(Compiler):Vue.js的编译器负责将模板转为虚拟DOM渲染函数。它将模板解析为AST(抽象语法树),然后通过遍历AST生成虚拟DOM渲染函数。 2.虚拟DOM(Virtual DOM):Vue.js使用虚拟DOM来提高渲染性能。虚拟DOM是一个轻量级的JavaScript对象树,它与真实的DOM结构相对应。通过比较新旧虚拟DOM树的差异,Vue.js可以高效地更新真实的DOM。 3.响应式系统(Reactivity System):Vue.js的响应式系统使得数据的变化能够自动驱动视图的更新。当数据发生变化时,Vue.js会通过依赖追踪和观察者模式来检测和通知相关的视图更新。 4.组件系统(Component System):Vue.js的组件系统允许开发者将页面划分为独立、可重用的组件。每个组件都有自己的模板、逻辑和样式,并且可以通过props和events进行父子组件之间的通信。 5.扩展API(Extension API):Vue.js提供了一些扩展API,用于扩展和定制Vue.js的行为。开发者可以使用这些API来实现自定义指令、混入等功能。 需要注意的是,Vue.js的源码非常庞大且涉及的细节非常多,理解整个源码需要深入的JavaScript和前端知识。如果你对Vue.js源码感兴趣,我建议你仔细阅读官方文档和参考相关的教程和资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值