<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
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'm "+this.name);
}
});
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,["BillGates",53]);
var SteveJobs = New(Employee,["SteveJobs",53,1000]);
BillGates.sayHello();
alert(BillGates.isA(Person));//true
alert(SteveJobs.isA(Person));//true
</script>
</head>
<body>
</body>
</html>