JavaScript的写类方式(3)
续上篇,
构造函数+原型 组装一个类;同一构造函数可以定义出多个类型
/** * $class 写类工具函数之二 * @param {Function} constructor * @param {Object} prototype */ function $class(constructor,prototype) { var c = constructor || function() {}; var p = prototype || {}; return function() { for(var atr in p) { arguments.callee.prototype[atr] = p[atr]; } c.apply(this,arguments); } }
与上一篇方式类似,仍然用构造函数,原型对象,定义两个类。
// 构造函数 function Person(name) { this.name = name; } // 原型对象 var proto = { getName : function(){return this.name}, setName : function(name){this.name = name;} } // 写两个类 var Man = $class(Person,proto); var Woman = $class(Person,proto);
与上一篇不同的是,虽然Man和Woman都是用Person,proto组装的。但Man却不等于Woman。即同一个构造函数(Person)可以定义出不同的类。
// 同一个构造函数(Person)定义不同的类 console.log(Man == Woman); //false
相关: