谈谈对 MVC、MVP、MVVM 模式的理解

在开发图形界面应用程序的时候,会把管理用户界面的层次称为 View,应用程序的数据为 Model,Model 提供数据操作的接口,执行相应的业务逻辑。MVCMVC 除了把应用程序分为 View、Model层,还额外的加了一个 Controller层,它的职责是进行 Model 和 View 之间的协


call和apply

call 和 apply共同点最主要的作用,是改变 this 的指向共同点是,都能够改变函数执行时的上下文为何要改变执行上下文?A 对象有一个方法,而 B 对象因为某种原因,也需要用到同样的方法,那么这时候我们是单独为 B 对象扩展一个方法呢,还是借用一下 A 对象的方法呢?当然是借用 A 对象的啦


队列

js是单线程语言,对于异步操作只能先把它放在一边,按照某种规则按先后顺序放进一个容器(其实就是存入宏观任务和微观任务队列中),先处理同步任务,再处理异步任务。异步任务分为 [ 宏观任务队列、微观任务队列 ]按照规定,能发起宏观任务的方法有:script(整体代码)、setTimeout、setInt


Vue3实现原理

核心方法在3.x中,使用reactive创建数据池。其和2.x中的data起一定相同作用。其本质是将传入的普通对象转为该普通对象的响应式代理(响应式数据)。等同于2.x的Vue.obserable() let proxy = Vue.reactive({name: 'Jonham'});


箭头函数与普通函数

箭头函数与普通函数(function)的区别是什么?构造函数(function)可以使用 new 生成实例,那么箭头函数可以吗?为什么?箭头函数是普通函数的简写,可以更优雅的定义一个函数,和普通函数相比,有以下几点差异:函数体内的 this 对象,就是定义时所在的对象,而不是使用时所在的对象;不可以


Vue3源码类

Vue3源码类Vue3为何弃用definePropertyObject.defineProperty 无法低耗费的监听到数组下标的变化,导致通过数组下标添加元素,不能实时响应;Object.defineProperty 只能劫持对象的属性,从而需要对每个对象,每个属性进行遍历。如果属性值是对象,还需


常见问题(三)

下面代码中 a 在什么情况下会打印 1?var a = ?;if(a == 1 && a == 2 && a == 3){ console.log(1);}从该代码当中,不难看出。变量a,必然不是一个字面量,比如数值或字符串,因为 a 不能同时等于多个值。。具体的看一


前端路由

了解SPA现代前端项目多为单页Web应用(SPA),在单页Web应用中路由是其中的重要环节。SPA 是 single page web application 的简称,译为单页Web应用。简单的说 SPA 就是一个WEB项目只有一个 HTML 页面,一旦页面加载完成,SPA不会因为用户的操作而进行页


常见问题(二)

简述浏览器缓存读取规则浏览器缓存可以优化性能,比如直接使用缓存而不发起请求,或者发起了请求但后端存储的数据和前端一致,则使用缓存从而减少响应数据。缓存位置Service workerService worker是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。使用Service worker的


操作题(一)

某公司 1 到 12 月份的销售额存在一个对象某公司 1 到 12 月份的销售额存在一个对象里面 如下:{1:222, 2:123, 5:888},请把数据处理为如下结构:[222, 123, null, null, 888, null, null, null, null, null, null,