JavaScript面向对象轻松入门之封装(demo by ES5、ES6、TypeScript)

此页面是否是列表页或首页?未找到合适正文内容。

JavaScript面向对象轻松入门之封装(demo by ES5、ES6、TypeScript)

标签:返回值cti静态属性familycode特定htmlibget

  本章默认大家已经看过作者的前一篇文章 《JavaScript面向对象轻松入门之抽象》

为什么要封装?

  封装(Encapsulation)就是把对象的内部属性和方法隐藏起来,外部代码访问该对象只能通过特定的接口访问,这也是面向接口编程思想的一部分。

  封装是面向对象编程里非常重要的一部分,让我们来看看没有封装的代码是什么样的:

1 function Dog(){
2 this.hairColor = ‘白色‘;//string
3 this.breed = ‘贵宾‘;//string
4 this.age = 2;//number
5 }
6 var dog = new Dog();
7 console.log(dog.breed);//log: ‘贵宾‘

  看似没有什么问题,但如果breed属性名修改了怎么办?比如换成this.type = ‘贵宾’,那所有使用Dog类的代码都要改变。

  如果类的代码和使用类的代码都是你写的,并且使用这个类的地方不多,你这么写无所谓。

  但如果使用这个类的地方比较多,或者协同开发时其它人还要使用你的类,那这样做就会让代码很难维护,正确的做法是:

1 function Dog(){
2 this.hairColor = ‘白色‘;//string
3 this.age = 2;//number
4 this._breed = ‘贵宾‘;//string
5 }
6 Dog.prototype.getBreed = function(){
7 return this._breed;
8 }
9 Dog.prototype.setBreed = function(val){
10 this._breed = val;
11 }
12 var dog = new Dog();
13 console.log(dog.getBreed());//log: ‘贵宾‘
14 dog.setBreed(‘土狗‘);

  getBreed()就是接口,如果内部的属性变化了,比如breed

作者: 鲁大师

为您推荐

返回顶部