浏览 1399 次
锁定老帖子 主题:javascript继承工具函数之三
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-23
按构造函数/原型混合 方式写类,即属性挂在this上,方法挂在prototype上。
工具函数extend如下,实现思路见注释 /** * @param {Function} subCls 子类 * @param {Function} superCls 父类 */ function extend(subCls,superCls) { //暂存子类原型 var sbp = subCls.prototype; //重写子类原型--原型继承 subCls.prototype = new superCls(); //重写后一定要将constructor指回subCls subCls.prototype.constructor = subCls; //还原子类原型 for(var atr in sbp) { subCls.prototype[atr] = sbp[atr]; } //暂存父类 subCls.supr = superCls; }
父类, /** * 父类Person */ function Person(nationality){ this.nationality = nationality; } Person.prototype.getNationality = function() {return this.nationality;} Person.prototype.setNationality = function(n) { this.nationality = n;} 子类,注意子类中要显示的调用父类构造器 function Man(nationality,name) { Man.supr.call(this,nationality);//调用父类构造器 this.name = name; } Man.prototype.getName = function() {return this.name;} Man.prototype.setName = function(n) {this.name=n;}
执行extend函数,创建Man的实例 extend(Man,Person); var m = new Man('USA','jack'); console.log(m); m.setName('lily'); console.log(m.name);
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |