李战的甘露模型

var object = {
    isA: function(aType) {
        var self = this;
        while (self) {
            if (self == aType) {
                return true;
            } 
            self = self.Type;
        };
        return false;
    }    
};

function Class(aBaseClass, aClassDefine) {
    function class_() {
        this.Type = aBaseClass;
        for (var member in aClassDefine) {
            this[member] = aClassDefine[member];
        } 
    };
    class_.prototype = aBaseClass;
    return new class_()
};

function New(aClass, aParams) {
    function new_() {
        this.Type = aClass;
        if (aClass.Create) 
            aClass.Create.apply(this, aParams);
    };
    new_.prototype = aClass;
    return new new_();
};

var Person = Class(object, {
    Create: function(name, age) {
        this.name = name;
        this.age = age;
    },
    SayHello: function() {
        alert('Hello, I am ' + this.name + ', ' + this.age);
    }
});

var Employee = Class(Person, {
    Create: function(name, age, salary) {
        Person.Create.call(this, name, age);
        this.salary = salary;
    },
    ShowMeTheMoney: function() {
        alert(this.name + ' $ ' + this.salary);
    }
});

var BillGates = New(Person, ['Bill Gates', 53]);
var SteveJobs = New(Employee, ['Steve Jobs', 53, 1234]);
BillGates.SayHello();
SteveJobs.SayHello();
SteveJobs.ShowMeTheMoney();

var LittleBill = New(BillGates.Type, ['Little Bill'], 6);
LittleBill.SayHello();

alert(BillGates.isA(Person));
alert(BillGates.isA(Employee));
alert(SteveJobs.isA(Person));
alert(Person.isA(Employee));
alert(Employee.isA(Person));


类的继承,另外一种实现方法,比较不错,思想很好,很值得学习.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值