4. inherit tool function 4 viewsourceprint? 01/** & nbsp; 02 & nbsp; * @ param {String} className & nbsp; 03 & nbsp; * @ param {String/Function} superClass & nbsp; 04 & nbsp; * @ param {Function} classImp & nbsp
4. inherit from tool function 4
View sourceprint? 01 /**
02 * @ param {String} className
03 * @ param {String/Function} superClass
04 * @ param {Function} classImp
05 */
06 function $ class (className, superClass, classImp ){
07 if (superClass = "") superClass = Object;
08 var clazz = function (){
09 return function (){
10 if (typeof this. init = "function "){
11 this. init. apply (this, arguments );
12}
13 };
14 }();
15 var p = clazz. prototype = new superClass ();
16 var _ super = superClass. prototype;
17 window [className] = clazz;
18 classImp. apply (p, [_ super]);
19}
Define parent class Person
View sourceprint? 01 /**
02 * parent class Person
03 */
04 $ class (Person, function (){
05 this. init = function (name ){
06 this. name = name;
07 };
08 this. getName = function (){
09 return this. name;
10 };
11 this. setName = function (name ){
12 this. name = name;
13}
14 });
Subclass Man
View sourceprint? 01 /**
02 * subclass Man
03 */
04 $ class (Man, Person, function (supr ){
05 this. init = function (name, age ){
06 supr. init. apply (this, [name]); // this sentence is very important.
07 this. age = age;
08 };
09 this. getAge = function (){
10 return this. age;
11 };
12 this. setAge = function (age ){
13 this. age = age;
14 };
15 });
16 var m = new Man (Jack, 25 );
17 console. log (m. name); // Jack
18 console. log (m. age); // 25
From the output, we can see that the sub-class Man does inherit the attributes and methods of the parent class.