javascript支持多态吗?

来源:网站建设 文章作者:dushilianren.cn 1228人浏览

文章摘要:javascript支持多态吗?JavaScript中支持多态;多态指的是为不同数据类型的实体提供统一的接口,多态类型可以将自身所支持的操作套用到其他类型的值上,在JavaScript中的多态则表示同一操作作用于不同的对象上面可以产生不同的解释和不同的执行结果。

javascript支持多态吗?


JavaScript中支持多态;多态指的是为不同数据类型的实体提供统一的接口,多态类型可以将自身所支持的操作套用到其他类型的值上,在JavaScript中的多态则表示同一操作作用于不同的对象上面可以产生不同的解释和不同的执行结果。

2022072816410853621.jpg

本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。

javascript支持多态

在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。

含义

同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果

比方说,我养了一只猫和一只狗,我对它们发出同一个指令 “叫一下”,猫会喵喵喵,而狗会汪汪汪,所以让它们叫一下就是同一操作,而叫声不同则是不同的执行结果。

例如

导演说开始action的时候,每个演员就自己做自己该做的事情,

而不是导演一个个的去告诉每个演员去做什么

多态的最根本的好处在于,你不必再向对象询问"你是什么类型"

然后根据得到的答案调用对象的某个行为

你只管调用该行为就行了,其他的一切多态机制都会为你安排妥当

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

// 多态背后的思想是将 做什么 和 谁去做 分离

// 也就是将不变的事物 与 可能改变的事物 分离出来

// 先来一段反例的多态代码

var makeSound = function (animal) {

if (animal instanceof Duck) {

console.log('嘎嘎嘎');

} else if (animal instanceof Chicken) {

console.log('咯咯咯');

}

}

var Duck = function () { };

var Chicken = function () { };

makeSound(new Duck());

makeSound(new Chicken());

// 此时如果加一个狗,还需要再去改源代码

示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

// 首先把不变的部分隔离出来

var makeSound = function (animal) {

animal.sound();

}

//然后把可变的部分各自封装起来,

var Duck = function () { }

Duck.prototype.sound = function () {

console.log("嘎嘎嘎");

}

var Chicken = function () { }

Chicken.prototype.sound = function () {

console.log("咯咯咯");

}

makeSound(new Duck());

makeSound(new Chicken());

//如果有一天改需求了,加一个动物

//简单追加一条代码就可以啦

var Dog = function () { }

Dog.prototype.sound = function () {

console.log("汪汪汪");

}

makeSound(new Dog());

实际案例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

// 实际案例

var googleMap = {

show: function () {

console.log('开始渲染谷歌地图');

}

}

var baiduMap = {

show: function () {

console.log('开始渲染百度地图');

}

}

var renderMap = function (map) {

if (map.show instanceof Function) {

map.show();

}

}

renderMap(googleMap)


本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.dushilianren.cn/szwzjsnews/114.html

业务咨询

  • 官方微信

    官方微信

  • 商务合作

  • 官方微信

    官方微信

  • Copyright © 2018-2022 小程序开发 APP开发 网站建设 小程序定制 APP定制 All Rights Reserved. 网站地图
    电话咨询:18936104252
    在线客服咨询