好久没在园子上写东西了,今天就从数据结构出发如何快速入手一门语言发表一下我的个人愚见
我们知道前后端有很多语言和框架,前端的如vue.js、angular.js、react.js后台如C++ php node.js java python等等
这么多语言,该如何上手呢?
任何一门语言,不管是强类型还是弱类型的都有数据结构这个概念,首先你要明白就是这个数据结构,以js为例常见的数据结构有
- 数字
- 数组
- 字符串
- 布尔型
- 对象
- function
数据结构都属于不同的类,每个类都有都有特定的属性和方法(可以用内置,对内置加以封装扩展,引入外库),还是以上面的数组为例,
let a=[1,2,3]
a.forEach(i=>console.log(i))
浏览器控制台会打印出1,2,3(因为浏览器支持了forEach方法),我们从深处分析一下,a为什么能用forEach方法?
let a=[1,2,3]
已经隐式地声明了 a的数据类型,用typescript的理结就是pulic a:Array
,用java的理解,它属于数组这个类- 那么既然它属于数组这个类,那么它自然能调用数组的方法
不对啊,你说他属于数组,可是我并没看到new关键字啊,类的属性和方法不是要new出来一个实例才可以访问吗?没错,其实
let a=[1,2,3]
就等价于
let a=new Array(1,2,3)
接下来来深入了解一个类
比如人就是一个类,人有很多属性和方法
- 眼耳口鼻手都是属性,眼睛能看,耳朵能听,鼻子能闻,口能说话,吃饭都是方法;眼睛蓝色的,耳朵大,鼻子小,口有颗痔都是静态属性
- 能走路,会唱歌,能跳舞是方法
[类的属性可以无限扩展]
比如耳朵早上是白色的,中午和红色的
现在明白了语言结构的类,下面来浅谈一下模块、组件、包的概念
类是组成模块组件包的基本单元,几个简单地类就能组成一个包,对类添加几个简单的逻辑就变成一个一个模块,对类包装一定的元数据就形成一个组件
再谈谈对象
var person={
name:"zhangsan",
age:14,
say(){
alert(this.name)
}
}
看着挺像类的,但是他并不是,他不能像类那样实现继承,下面写一个简单的类
class Person{
constructor(public name:string,age:number){
}
say(){
alert(this.name)
}
}
var p1=new Person("zhansan",14)
p1.say()//zhangsan
var p2=new Person("lisi",17)
p1.say()//lisi
对象也能记录上面的信息
var person1={
name:"zhangsan",
age:14,
say(){
alert(this.name)
}
}
var person2={
name:"lisi",
age:17,
say(){
alert(this.name)
}
}
这样实例一个对象显然不够优雅,那么它就被淘汰了吗?NO,虽然他它在实例化话类方法差了那么一点,但是它的扩展性非常强,用过mongodb的都知道,为什么他比mysql强大,抛开并发访问量,光凭这一点他就赢了,所以他可以用来做数据存储,如果服务器没开发好,用它来mock数据是个不错的选择,特别是在前端spa(只要不刷新页面,数据就不会丢失),利用数组的增删改查,length实现分页,pop,push方法,unshift最顶部显示