1. 闭包【面试题】
1.简单意义的闭包概念
如果一个函数使用它范围外的变量,则把这个变量和函数称为闭包。 闭包例子:
var a = 1;
function fn(){
console.log(a);
}
2.闭包的作用
- 可以读取函数内部变量
- 可以让这个变量的值一直保存在内存中
3. 闭包【面试题】意义
//闭包永远跟立即执行函数一起用
var accessor = function(){ //声明一个返回一个匿名函数的立即执行函数(accessor访问器)
var person = { //声明变量,这个变量只能(全局范围内都可以)通过growUp来操作,但不能直接访问
name:'qinglin',
age:18
}
return function(){ //闭包,间接地对闭包变量进行操作
person.age += 1
return person.age
}
}
var growUp = accessor.call() //立即执行accessor,结果返回一个函数,把这个返回函数赋给growUp ,gorwUp存储这个全局变量函数地址,在哪都能调用
growUp.call() //再执行gorwUp函数
解释
1. 立即执行函数使得person 不能被外部访问
2. 闭包使得内部 return函数可以操作person
3. growUp函数保存了retrun函数的地址
4. 全局范围内任何地方都能调用growUp操作person
总结:任何地方都可以使用 growUp函数操作person,但是不能直接访问person
2. MVC
1. MVC ——
- 概念:
MVC 是一种设计模式(或者软件架构),把系统分为三层:Model数据、View视图和Controller控制器。
Model 数据管理,包括数据逻辑、数据请求、数据存储等功能。前端 Model 主要负责 AJAX 请求或者 LocalStorage 存储
View 负责用户界面,前端 View 主要负责 HTML 渲染。Controller 负责处理 View 的事件,并更新 Model;也负责监听 Model 的变化,并更新 View,Controller 控制其他的所有流程。
- 流程:
Model 和服务器交互,Model 将得到的数据交给 Controller,Controller 把数据填入 View,并监听 View 用户操作 View,如点击按钮,Controller 就会接受到点击事件,Controller 这时会去调用 Model,Model 会与服务器交互,得到数据后返回给 Controller,Controller 得到数据就去更新 View
2. 代码示例
var model = {
data: null,
init(){}
fetch(){}
save(){}
update(){}
delete(){}
}
view = {
init() {}
template: '<h1>hi</h1'>
}
controller = {
view: null,
model: null,
init(view, model){
this.view = view
this.model = model
this.bindEvents()
}
render(){
this.view.querySelector('name').innerText = this.model.data.name
},
bindEvents(){}
}
3. 用MVC思想代码分层
1.代码分层理论基础:
. 第一层:Server
. 第二层:Model
. 第三层:Controller
. 第四层:View
2.各层代码之间交互:
。 用户只能点击View,其它分层用户完全不能操作,View一旦被用户点击了,他就会通知监听它的Controller, Controller就会区View里面获取信息,然后Controller就会去调用Model,被调用的Model会向Server发起请求。Server收到请求之后做出响应给Model,MOdel回把数据返回给Controller,Controller会更新View,View会把效果展示给用户。(View和Model之间基本上没有交互,Controller也不会直接去访问Server)
4. js两大功能
1. DOM API —— 各种API,jQuery等
2. AJAX —— XMLHttpRequeest对象(主要的)
-
前端没有跨设备存储数据功能,我们可以自行在 阿里云购买服务器,或者在 LeanCloud 创建一个数据库。
-
我介绍以下leanCloud: 它是一个自带数据库和增删改查的(CRUD)的后台系统。
-
leanCloud功能:
- 登陆注册,手机验证码等(免费的只有200兆,收费)
- 存储任意信息
- 读取任意信息
- 搜索任意信息
- 删除任意信息
- 更新任意信息
-
leanCloud用法:
-
创建一个应用
-
cdn引用av.min.js到html文件,得到window.AV
-
创建一个js文件
-
初始化(代码直接拷)
-
验证(测试),新建一条数据
-
获取对象(内容)
-
3. CRM 思想
所谓CRM 就是指Copy + Run + Modify
-
Copy —— 拷贝别人的代码
-
Run —— 运行代码
-
Modify —— 仿照别人的代码(对html/js/css进行操作)
上面的内容使用leanCloud就是个典型的CRM例子。