zoukankan      html  css  js  c++  java
  • 让JS写的更接近OOP

    下面这段代码就是利用JS原型对象,来实现的类的继承DEMO 

    $ 为jquery对象

    ////公共方法
    //  $.oop.newClass=function newClass(obj) {
    //     function create() {
    //         if (obj != null)
    //             return obj();
    //     }
    //     var c = new create();
    //     return c;
    // }
    
    //
    var person = $.oop.newClass(function () {
    
        //构造函数
        function person() {
    
        }
    
        //公有属性
        person.prototype.age = 15;
    
        //公有函数
        person.prototype.eat = function () {
            alert("我会吃");
        };
    
        return person;
    });
    
    //程序员
    var programMonkey = $.oop.newClass(function () {
    
        //构造函数
        function programMonkey() {
    
        } programMonkey.prototype = person.prototype;//继承
    
    
        programMonkey.prototype.skill = "asp.net";
    
        programMonkey.prototype.work = function () {
            alert("我会加班");
        }
    
        return programMonkey;
    });
    
    
    var pm = new programMonkey();
    //人的函数
    pm.eat();
    //程序猿的函数
    pm.work();
    //输出属性
    alert("人家才" + pm.age + "岁,我是一个" + pm.skill + "猿");

    因为JS一些特性实现一个多态也非简单

    //共用函数
    //$.oop.newClass = function (obj) {
    //    function Create() {
    //        if (obj != null)
    //            return obj();
    //    }
    //    var c = new Create();
    //    return c;
    //}
    
    var iPerson = $.oop.newClass(function () {
    
        //构造函数
        function person() {
    
        }
        person.prototype.name;
        person.prototype.iq;
        person.prototype.eat;
        return person;
    });
    
    //程序员
    var programMonkey = $.oop.newClass(function () {
    
        //构造函数
        function programMonkey() {
    
        } programMonkey.prototype = iPerson.prototype ;//继承
        return programMonkey;
    });
    
    //设计湿
    var designer = $.oop.newClass(function () {
    
        //构造函数
        function designer() {
    
        } designer.prototype = iPerson.prototype ;//继承
        return designer;
    });
    
    
    
    var inputValue = "程序员";
    
    var ip = new iPerson();
    
    if (inputValue == "程序员") {
    
        ip = new programMonkey();
        ip.iq = 0;
        ip.eat = function (msg) {
            alert(msg + "吃香蕉")
        }
        
    } else if (inputValue == "设计湿") {
    
        ip = new designer();
        ip.iq = 100;
        ip.eat = function (msg) {
            alert(msg + "吃香蕉")
        }
    }
    ip.name = inputValue;
     
    ip.eat("我是"+ip.name+"  智力"+ip.iq+" ");
     
    
    
     
     

    根据不同的input Value会执行相应的 eat函数

  • 相关阅读:
    composer设置国内镜像
    mac安装composer
    composer安装laravel
    How to use MySQL 5.6 with MAMP 3 and MAMP PRO 3
    视觉惯性里程计:IMU预积分
    通过安卓NDK调用opencv4android 并通过adb shell 测试生成的二进制文件
    ubuntu: aptget update的时候遇到“Hash Sum mismatch”错误
    卡尔曼滤波 (Kalman Filter)的一个简单实现: 恒定加速度模型
    双目相机与IMU camera IMU 联合标定工具箱使用方法——Kalibr
    HKUST VINSMONO :香港科大开源VINSSLAM算法 part 2
  • 原文地址:https://www.cnblogs.com/sunkaixuan/p/5184201.html
Copyright © 2011-2022 走看看