让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函数

 

posted @   阿妮亚  阅读(1017)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示