JavaScript面向对象的设计原则(二)
这一期,我们来看下JavaScript面向对象设计中的核心--对象.
面向对象的本质是将现实世界抽象层到计算机的世界,Class所体现的正是人类在观察世界中所经常进行的一项工作,分类.
我们可能会经常整理屋子,然后将整理后的东西分门别类的放好.我们根据什么分类?电器,食物,书籍,这些属性是我们分类的依据,这些不同类别的用品都有什么功能?食物可以吃,可以加工,书籍可以看,电器可以使用.抽象到计算机的世界,于是就有了class,property,method,类,属性,方法.
所以我们日常中所进行的活动,很多都是分类的活动,你在工作中生活中所做的分类活动就是一种面向对象的设计行为,相对于类的概念,对象更具体,粒度更小,我们可以将具有一类共性的对象称为类.
当一个对象很具体,我们就称其为一个实例.
示例
var personInstance = {
name:'jacky',
age:60,
six:'meal'
}
当一个对象很抽象,我们可以称其为类.
示例
var PersonClass = {
name:'',
age:'',
six:''
}
这里我们没有使用任何JavaScript模拟类的技术,也没有用上ES6的class,但实际上这就是一个实例,一个类,从中我们可以看到,面向对象的设计其实是语言无关的,只要你能够表达出其中的含义,如何实现,并不是重点.
JavaScript类设计
抛开各种模拟类的语法糖,让我们直面本质来看看如何设计一个JavaScript类.
1.合理封装
封装的目的是找出代码中的变化点,将其包裹起来,通过统一的具有语义的API接口来输出结果,隐藏其中的实现和具体算法.
示例
function MenuTree () {
this.dataSource = [],
this.template = '

浙公网安备 33010602011771号