• javascript中的封装多态和继承


    封装Encapsulation

    如下代码,这就算是封装了

    (function (windows, undefined) {
        var i = 0;//相对外部环境来说,这里的i就算是封装了
    })(window, undefined);

    继承Inheritance

    (function (windows, undefined) {
        //父类
        function Person() { }
        Person.prototype.name = "name in Person";
     
        //子类
        function Student() { }
        Student.prototype = new Person();           //修复原型
        Student.prototype.constructor = Student;    //构造函数
        Student.prototype.supr = Person.prototype;  //父类
     
        //创建子类实例
        var stu = new Student();
        Student.prototype.age = 28;
        Student.prototype.name = "name in Student instance";
     
        //打印子类成员及父类成员
        alert(stu.name); //name in Student instance
        alert(stu.supr.name); //name in Person
        alert(stu.age); //28
     
    })(window, undefined);

    多态Polymorphism

    有了继承,多态就好办了

    //这就是继承了
    (function (windows, undefined) {
        //父类
        function Person() { }
        Person.prototype.name = "name in Person";
        Person.prototype.learning = function () {
            alert("learning in Person")
        }
     
        //子类
        function Student() { }
        Student.prototype = new Person();           //修复原型
        Student.prototype.constructor = Student;    //构造函数
        Student.prototype.supr = Person.prototype;  //父类
        Student.prototype.learning = function () {
            alert("learning in Student");
        }
     
        //工人
        function Worker() { }
        Worker.prototype = new Person();           //修复原型
        Worker.prototype.constructor = Worker;    //构造函数
        Worker.prototype.supr = Person.prototype;  //父类
        Worker.prototype.learning = function () {
            alert("learning in Worker");
        }
     
        //工厂
        var personFactory = function (type) {
            switch (type) {
                case "Worker":
                    return new Worker();
                    break;
                case "Student":
                    return new Student();
                    break;
            }
            return new Person();
        }
     
        //客户端
        var person = personFactory("Student");
        person.learning(); //learning in Student
        person = personFactory("Worker");
        person.learning(); //learning in Worker
     
    })(window, undefined);


    ------------------------------------------
    除非特别声明,文章均为原创,版权与博客园共有,转载请保留出处
    BUY ME COFFEE
  • 相关阅读:
    window下mySql数据库设置密码
    java——基础 在w10环境下如何配置java环境
    解决 idea自动更新jsp页面的问题
    在w7上使用Virtualbox安装Ubuntu 17
    关于在Intellij Idea中使用JSTL标签库报错的问题
    java.nio.BufferUnderflowException
    java——原型模式
    java基础——对象的equals和hashcode覆盖原则
    java基础——JDBC链接数据库的步骤
    java基础——基本数据类型
  • 原文地址:https://www.cnblogs.com/kkun/p/2314885.html
Copyright © 2020-2023  润新知