• 技术文章 >web前端 >前端问答

    javascript支持多态吗

    长期闲置长期闲置2022-07-28 17:11:40原创126

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

    本教程操作环境: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中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:javascript
    上一篇:split方法在javascript中怎么用 下一篇:常见css hack有哪些
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 浅显易懂的JavaScript引入• 详细了解JavaScript编译原理• JavaScript怎么处理树状结构数据的增删改查• 简单介绍JavaScript “原型“与“原型链“• JavaScript中switch的四种写法示例
    1/1

    PHP中文网