《javascript设计模式与开放实践》学习javascript实现多态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《javascript设计模式与开放实践》学习javascript实现多态相关的知识,希望对你有一定的参考价值。

还是以鸭子唱歌为例

1、prototype 给对象添加方法或属性

  <script>
        var makeSound=function (animal) {
            animal.sound();
        }
        var Duck=function () {
        }
        Duck.prototype.sound=function () {
            console.log("嘎嘎嘎");
        }
        var Chichen=function () {
        }
        Chichen.prototype.sound=function () {
            console.log("咯咯咯");
        }
        makeSound(new Chichen());
        makeSound(new Duck())

    </script>

给定义的Duck和 Chicken添加sound的方法

2、typeof和instanceof用法

只有具有sound方法的动物才能唱歌

1)typeof

用来检测给定变量的数据类型,可能的返回值:

1. ‘undefined‘ --- 这个值未定义;

2. ‘boolean‘    --- 这个值是布尔值;

3. ‘string‘        --- 这个值是字符串;

4. ‘number‘     --- 这个值是数值;

5. ‘object‘       --- 这个值是对象或null;

6. ‘function‘    --- 这个值是函数。

var makeSound=function (animal) {
            if(typeof animal.sound===‘function‘){
                animal.sound();
            }
}

2)instanceof用来判断对象是否某另一个对象的实力,返回值true or false

 var makeSound=function (animal) {
            if(animal.sound instanceof Function){
                animal.sound();
            }
 }

 

以上是关于《javascript设计模式与开放实践》学习javascript实现多态的主要内容,如果未能解决你的问题,请参考以下文章

《javascript设计模式与开放实践》学习私有变量

《javascript设计模式与开放实践》学习对象方法的借用

《javascript设计模式与开放实践》学习惰性单例模式

《javascript设计模式与开放实践》学习高阶函数的应用

《javascript设计模式与开放实践》学习Function.prototype.bind

《javascript设计模式与开放实践》学习函数的闭包1