【JS设计模式2】面向对象

2018-10-28  本文已影响0人  八宝君

面向对象的概念

类就是模板
比如说

class Person{
  constructor(name, age) {
    this.name = name
    this.age = age
  }
  eat() {
    alert(`${this.name} eat something`)
  }
  speak() {
    alert(`My name is ${this.name}, age ${this.age}`)
  }
}

这里将Person做成一个模板,nameage就是它的属性,Person还有很多动作,比如说这里的动作行为是eatspeak
所以在类里面一般分为两个:

实例(对象)

通过类可以实例化很多对象,比如说:

let babao = new Person('八宝君', 25);
babao.eat();
babao.speak();
babao.eat()
babao.speak()

三要素:继承,封装,多态

继承:子类继承父类

定义一个父类
再定义一个子类
学生是一个子类,继承自Person, 然后学生一般都有一个号码,用supernameage传递给父类的构造函数来执行。自己处理number,为什么呢?因为学号只有学生才有。
然后另外定义了一个study方法。
子类继承了父类之后,创建一个实例。
定义实例
依次会弹出下面4个弹窗
弹窗1
弹窗2
弹窗3
弹窗4
【PS】

封装:数据的权限和保密

public 完全开放  protected 对子类及自己开放
private 对自己开放
ES6尚不支持,可以用typescript来演示

这部分是TypeScript里的,什么都不写默认是public公开的。
protectedprivate都是不允许在外面访问的。
比如说new了一个实例,然后打印或者alert一下protectedprivatae的属性,会发现编译不通过。

【特点】:


多态:同一接口不同实现


JS的应用举例

window.$ = function(selector) {
  return new jQuery(selector)
}

这个是什么意思呢,jquery是一个构造函数,return new jquery也就是返回它的一个实例,然后下面的:

var $p = $('p')

是说将p传进去,上面的selector也就是p$p也就是jQuery的一个实例,$p.addClass也就是实例上的方法。


面向对象的意义

程序执行:顺序、判断、循环------结构化
面向对象-------数据结构化
对于计算机,结构化的才是最简单的
编程应该 简单&抽象

上一篇下一篇

猜你喜欢

热点阅读