zoukankan      html  css  js  c++  java
  • 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.supr.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);
  • 相关阅读:
    alter noparallel
    朝代
    asp.net core 发布包含文件
    执行dotnet *.dll启动项目,如何修改环境变量----ASPNETCORE_ENVIRONMENT
    MySQL授权--WITH GRANT OPTION
    js/ts/tsx读取excel表格中的日期格式转换
    linux test tool--"ab"
    nginx代理配置
    docker 容器与本机文件的拷贝操作
    linux系统,没有安装任何编辑器的情况,如何操作文件
  • 原文地址:https://www.cnblogs.com/syf/p/2764086.html
Copyright © 2011-2022 走看看