>首页> IT >

关注:javascript支持多态吗

时间:2022-07-28 16:46:47       来源:PHP中文网

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


(资料图片仅供参考)

javascript支持多态

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

含义

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

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

例如

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

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

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

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

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

// 多态背后的思想是将 做什么 和 谁去做 分离// 也就是将不变的事物 与 可能改变的事物 分离出来// 先来一段反例的多态代码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());// 此时如果加一个狗,还需要再去改源代码

示例

// 首先把不变的部分隔离出来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());

实际案例

// 实际案例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)

【相关推荐:javascript视频教程、web前端】

以上就是javascript支持多态吗的详细内容,更多请关注php中文网其它相关文章!

关键词: 相关文章 数据类型 分离出来