美文网首页
JavaScript的多态和封装

JavaScript的多态和封装

作者: 龚达耶 | 来源:发表于2019-12-18 21:04 被阅读0次

在之前的文章中我们已经介绍了JavaScript的继承包含了ES5和ES6的版本。

ES5继承 传送门

ES6继承 传送门

今天我们介绍面向对象剩下的多态和封装

多态

在《JavaScript设计模式与开发实践》中介绍到多态就是同一操作在不同对象上产生不同的解释和执行结果。

const Daye = function() {}
const Erye = function(){}
const daye = new Daye();
const erye = new Erye();


const getPeople = people => {
  if(people instanceof Daye){
    console.log('你是大爷')
  } else if (people instanceof Erye){
    console.log('你是二爷')
  }
}


getPeople(daye) // 你是大爷
getPeople(erye) // 你是二爷

这时候三爷来了我们就需要改getPeople代码, 如果说今后代码多了我们可能会出错。
所以我们来改进这个代码,先把要变的抽象出来,因为多态就是对象的多态。

这里我们使用原型链

const Daye = function() {}
Daye.prototype.name = function(){
  console.log('你是大爷')
}

const Erye = function() {}
Erye.prototype.name = function(){
  console.log('你是二爷')
}

const daye = new Daye();
const erye = new Erye();


const getPeople = people => {
  people.name()
}


getPeople(daye)
getPeople(erye)

这样我们随便加好几个都ok

当然如果是对象的话我们也可以修改我们之前的代码

<script type="text/javascript">
const daye = {
  name: ()=>{
    console.log('你是大爷')
  }
}
const erye = {
  name: ()=>{
    console.log('你是二爷')
  }
}


const getPeople = people => {
  if (people.name instanceof Function) {
    people.name()
  }
}


getPeople(daye)
getPeople(erye)

封装

封装就是将信息隐藏 在JS中我们可以用let或const定义作用域 或者用Symbol创建私有属性

关于Symbol可以看我之前的文章

Symbol 传送门

let声明的变量只在其所在的代码块内有效

for循环计数器是最适合let

如果在函数外就会报错

let things = ['apple', 'pear', 'mongo']
for (let i = things.length - 1; i >= 0; i--) {
  console.log(i)
  console.log(things[i])
}
console.log(i) //  i is not defined

相关文章

  • JavaScript的多态和封装

    在之前的文章中我们已经介绍了JavaScript的继承包含了ES5和ES6的版本。 ES5继承 传送门 ES6继承...

  • JavaScript封装 继承 多态0711

    JavaScript封装 继承 多态 1.封装(和java,c++一样) 1.1 首先了解一下什么是对象的私有变量...

  • JavaScript的封装

    JavaScript,也是一门面向对象编程的语言,但是一直没想过JavaScript的封装,继承,多态体现在哪里,...

  • 多态和封装

    继承 : 提高代码的重用性,规范代码(要就继承父类的子类都实现相同的方法:抽象类、接口) 当你开始编写两个类的时...

  • 多态和封装

    多态和封装 多态 多态:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象不同而采用多种不同的行为方...

  • day09-Java面向对象三(多态/抽象类/接口)

    9.0 Java面向对象三大特性 封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的 多态概念:指...

  • iOS 语言三大特性

    封装 、 继承、多态OC学习篇之---类的三大特性(封装,继承,多态) - Android应用安全防护和逆向分析-...

  • JavaScript基础⑤ES6中的面向对象

    接续上篇JavaScript基础④基于原型的面向对象编程 前言 面向对象语言的基本特征:封装,继承,多态 。 这是...

  • 强化原型(一)

    《深入理解ES6》阅读随笔 Javascript 作为一门面向对象的高级语言,拥有继承、封装和多态等三大特性。而在...

  • iOS开发之一OC语言的特性

    三大特性:封装、继承、多态 一、封装(成员变量的封装) 二、继承 三、多态(多种形态)

网友评论

      本文标题:JavaScript的多态和封装

      本文链接:https://www.haomeiwen.com/subject/tzqpnctx.html