javaScript是不是面向对象语言?
以前在书上看到的比较好的一段描述,分享出来仅供参考,下面的例子是以大家熟知的person类,在这里对这个例子不做过多的阐述。
在传统的面向对象语言(java)中,我们一般会这样描述自己的做法:“我基于Person类创建了一个叫Bob的新对象。”,而在js这种基于原型的面向对象语言中,我们会这样描述:”我将现有的Person对象扩展成一个叫Bob的新对象。”
js压根没有类,该语言都是基于对象,其所依靠的是一套原型系统(prototype实际上也是一种对象)。这句话也与‘万物皆对象’呼应了哈。
结合之前项目中的代码细说一下(结合vue+es6--class)。
需求:一张人员卡片上有语音通话,视频监控,视频点呼(同微信视频)等功能,并且视频监控和视频电呼不能同时发起,语音通话和视频电话不能同时发起。
做法:抽象功能,一个功能创建一个类;再创建一个状态管理的类对所有功能类做一个状态冲突管理。比如,当处于语音通话中时发起视频电呼,提醒用户是否挂掉语音发起视频等操作。
创建功能类
//创建js文件work.js workManage.js(管理类)
import workManage from './workMange'
let manage = workManage.getInstance /*生成管理类单例*/
export default class work {
constructor(id,info){
this.id=id;
this.name=info.name;
this.type=info.type; /*monitor--视频监控;audio--语音通话;video--视频电呼*/
}
}