悟透JavaScript之原形真谛-用简洁而优雅的代码书写类层次及其继承关系
悟透JavaScript之原型真谛-用简洁而优雅的代码书写类层次及其继承关系
<!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>