怎么样能快速的打好前端开发的基础,然后让自己的技术尽快的提高一个层次?相信这是每一个前端新人都在思考的问题。而这个问题也不止一个同学问过我,怎么样能快速学好前端?Js学到什么程度可以?其实这类问题都有一个共同的点,就是【前端开发中真正重要的技术是什么?】
在我个人主观看来,前端开发技术体系中的核心技术有且只有一个,就是JavaScirpt。不深入掌握JavaScirpt,就不可能深入理解整个前端技术体系。为什么这么说呢?曾经有同学问过我,“难道html5、css2、3就不是核心技术吗”?我当时大概是这样回答的,“因为是Js驱动着h5、css,而不是反过来”。
<!-- -->
那么,为什么一定要掌握JavaScirpt呢?有同学vue、reactJs框架用的很6也不错啊。短期看确实是没有问题的,但如果从长期来看。不掌握JavaSciprt,就不能透过现象看本质。什么意思呢?是这样,
1、函数都是对象,对象是引用传递;
2、不理解第1点,就不会明白redux其实是把函数的引用传递到了reducers里面;
3、不深入理解prototype、constructor,就不会明白es6中的constructor中的supers()其实就是下面这三行代码,
function a(){}
function b(){}
b.prototype = new a();
4、如果不懂js的闭包,就不会明白私有方法;
5、如果不明白第4点,就不可能看懂数据属性、访问器属性Object.defineProperty()的get和set;
6、更不会明白vueJs的双向绑定的实现原理,
7、、、
这种情况持续一二年,就会发现自己只会一些vue、react、jq、js,然后想提高也不知道看什么,想看一些深入的东西也看不懂。然后自己的技术和工资水平就长期在低水平徘徊。
<!-- -->
那么,网上的资料那么多,到底该看哪些呢?或是看哪本书呢?不用纠结,我给你们总结出来了,原生JavaScritp核心、重点的内容,就是下面这些,
你只要把这些内容搞懂80%,你的JavaScript的基础就可以说已经打好了。这时有同学已经懵了,【这些东西全不懂啊】。。。
<!-- 现在我们先来分析一下,上面截图中的东西都是什么? -->
this,是一个对象;
new,生成是一个实例,其实也是一个对象;
prototype,它是每个函数都有的属性,它的结果是一个对象;
constructor,它指向构造函数,函数也是对象;
call、apply,它要传入的值是this,也是对象;
继承是a.prototype = new b(),操作的是对象;
原型链主要就是prototype、constructor,也是操作对象;
模块化,主要就是操作函数,函数是什么?还是对象
闭包,父函数返回子函数,函数是对象;
IIFE(function(){})(),自动执行函数,函数是对象;
作用域链,操作this的,还是对象;
__proto__,每个对象都有的隐式原型属性,值也是对象;
...
..
你可以发现,这些东西全都是【对象】,没有例外。为什么呢?因为JavaScirpt是基于对象的脚本语言。所以,学明白JavaScript的首要条件就是,从对象的角度来看待Js,【对象是按引用传递的】。
所以,从对象的角度来讲,上面截图中只有一个东西,就是“对象”。之所以分成那么多名字,只是为了应对不同情况而已。如果认识不到这一点,就会陷入学之不尽的困境中。
JavaScirpt比较讨厌的一点,就是同一个东西在不同的情况下,会有不同的名字。例如函数,
function a(){},
这是普通的函数;
function a(){}
new a();
这时函数a的名字叫构造器
function a(){}
a.xx = function(){console.log('xxx')}
a.xx();//xxx
这时xx它叫静态方法
function a(){
this.axx = function(){}
}
这时axx叫动态方法
function a(){
var x = 1;
function b(){console.log(x)}
return b;
}
这时函数b,叫闭包
function a(){
this.fn = function(){}
}
这时fn函数叫公共方法
function a(){
function b(){}
this.b1 = b;
}
这时函数b叫私有方法
而b1函数叫什么特权方法,因为它能访问私有和公有方法;
但同学们抛开这些名字仔细看看,它们都是函数啊。对于它们用操作,要么是操作引用,要么是通过作用域。而引用和作用域,是最基础最基础的概念了。所以啊,这就像打地基一样,第一层不牢,自然第二层、第n层不牢。你看不懂上面截图中的那些重要知识点,是因为最基本的关于对象、引用的知识理解不深。
<!-- -->
那么怎么办呢?
第一步,彻底理解、记牢最基本的概念;
第二步,从对象、引用的角度去看JavaScirpt;
第三步,牢记Js传来传去的都是引用;
不能被js的各种花里胡哨的名称、概念晃花了眼,要透过现象看本质,【它们都是对象】。
因为篇幅所限,这篇文章写到这里基本也就要结束了。如果这方面还有什么其它的疑问,可以加我vx:blazeloulan,或在文章末尾留言给我。我感脚,我还是可以给出一些建议的。