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);
  • 相关阅读:
    分享Silverlight/WPF/Windows Phone一周学习导读(12月13日12月19日)
    分享Silverlight/WPF/Windows Phone一周学习导读(12月20日12月26日)
    关注Silverlight的未来 推荐注册微软Silverlight FireStarter大会
    Silverlight for Windows Phone Toolkit升级 新增四个控件
    分享Silverlight新鲜事(11月15日21日) PDC 10 Downloader
    分享Silverlight/WPF/Windows Phone一周学习导读(11月22日28日)
    微软副总裁Bob Muglia对Silverlight的公开道歉信
    分享Silverlight/WPF/Windows Phone一周学习导读(11月29日12月5日)
    [转]diff和patch
    Linux查看进程的所有子进程和线程
  • 原文地址:https://www.cnblogs.com/syf/p/2764086.html
Copyright © 2011-2022 走看看