最近一直在重学React自己整理出了一份学习顺序,有兴趣的朋友可以常看我的帖子会持续更新。
那么我简单说一下我的顺序 也是找了部分朋友和看了些帖子总结出来的 我 就 不一 一 介 绍 为 什 么 了
1.javaScript(React的Api在es5和es6有差异性[注意])
2.npm
3.React(最好是通过官方文档学习)也可以通过react heatpack来快速上手
4.构建(要求对react有一个稳固的概念,强行吃会导致掌握不好或遗忘)并且如果是和我一样从别的框架转过来的的话
不要心急去考虑(是否测试、框架扩展、是否重构等、可维护/代码结构)一类会耽误自己的学习进度和质量.
5.Webpack
6.Es6
7.Routing
8.Redux
话不多说我们今天从第一项开始学习(JavaScript)
当然了如果是连基础概念都没有的朋友我推荐你去阅读官方文本(毕竟肯定比我说的详细.....) 传送门
首先JavaScript 是属于 HTML 和 Web 的编程语言
并且JavaScript 很容易学习
数据类型、判断方法
ECMAScript的基本数据类型有5种:Undefined、Null、Boolean、Number、String。
其中Boolean、Number、String属于原始类型,Undefined、Null属于原始值。
Object是一种复合值,它将很多值(原始类型/值或者其他对象)聚合在一起,通过属性的形式进行访问。
ECMAScript的特殊对象类型:Array、Function、Math、Date、JSON、RegExp、Error,
每种类型都各自代表一种独立的类,不同的类实例拥有不同的类特性以及对应的操作方式。
区分数据类型的方法:Object.prototype.toString.call()
上下文
单线程
函数的执行上下文的个数没有限制
每次某个函数被调用,就会有个新的执行上下文为其创建,即使是调用的自身函数,也一样
原型、原型链
在JavaScript中,每一个对象都会和另一个对象产生关联,从另一个对象上继承属性,这里所指的另一个对象就是我们耳熟能详的原型。
原型本身也是一个对象,其他对象可以通过它实现属性的继承,也可以将任何一个对象作为自身对象的原型。
JS中的任何对象都有原型,除了原型链顶端的对象:Object.prototype
作用域
作用域,就必须结合变量的访问权限来说明。一个变量的作用域就是在程序中定义变量的区域,它规定了执行程序如何对变量进行
查找,也就是确定当前的执行代码对变量的访问权限。在ES5中有全局作用域、函数作用域、eval作用域,在ES6中新增了块级作用域
作用域链的顶端是全局作用域,作用域链在函数定义时就已经创建了
闭包、垃圾回收机制
简单来说:有权访问另一个函数作用域内变量的函数都是闭包
闭包特性:
1.函数返回嵌套的函数形成闭包
2.闭包内部可以访问外部的参数和变量
3.外部参数和变量在被闭包引用时不会被垃圾回收机制回收
闭包优点:
1.可避免变量对全局的污染
2.允许函数私有成员的存在
3.允许变量长驻内存
闭包缺点:
由于变量常驻内存,增大内存使用量,使用不当很容易造成内存泄漏。
闭包应用场景:
1.采用函数引用方式的setTimeout调用
2.将函数关联到对象的实例方法
3.封装相关的功能集
JavaScript中的垃圾回收,主要是一种针对程序执行环境中内存的管理机制,该机制最大限度的优化了JS程序对操作系统内存的使用。
垃圾回收机制也同样非常容易理解:就是利用垃圾收集器,周期性的回收那些程序中,不被其他引用所指向的变量的内存资源。
AJAX:
Ajax是浏览器专门用来和服务器进行交互的异步通讯技术,其核心对象是XMLHttpRequest,通过该对象可以创建一个Ajax请求。
为了防止XSS攻击,浏览器对Ajax做了限制,不允许Ajax跨域请求服务器,就是只能访问当前域名下的url。
JS的跨域访问,就是在不同的域名下进行HTTP请求与响应。JSONP就是一种常用的跨域通信方式,他利用了脚本跨域能力来模拟Ajax请求。
this指向
1.如果一个函数中有this,但是它没有以对象方法的形式调用,而是以函数名的形式执行,那么this指向的就是全局对象。
2.如果一个函数中有this,并且这个函数是以对象方法的形式调用,那么this指向的就是调用该方法的对象。
3.如果一个函数中有this,并且包含该函数的对象也同时被另一个对象所包含,尽管这个函数是被最外层的对象所调用,
this指向的也只是它上一级的对象。
4.如果一个构造函数或类方法中有this,那么它指向由该构造函数或类创建出来的实例对象。
同步异步
单线程是JavaScript语言的一大特点,也就是在同一时间只能做一件事。所谓同步,
原意就是程序的执行顺序与书写顺寻保持一致;而异步,指的是程序并非按照书写的顺序来执行,会存在“跳过”执行的现象。
事件模型
1.事件冒泡:从触发事件的DOM节点对象开始,自底向上逐层传播,最后到达最顶层的document对象的过程。
2.事件捕获:从最顶层的document对象开始,自顶向下沿着DOM树的结构逐层传播,直到触发事件的DOM节点对象的过程。
3.事件委托/事件代理:利用事件冒泡的原理,将事件加到目标节点的父级节点上,触发执行效果。
好处就是:(1)可以减少事件绑定的次数,利于提高性能。(2)新添加的元素还会有之前的事件。