您的位置:首页 > Web前端 > JavaScript

让JS写的更接近OOP

2016-02-06 19:05 567 查看
下面这段代码就是利用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函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: