论坛首页 Web前端技术论坛

JavaScript实现继承---extend函数

浏览 3120 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-04-19  
/* Extend Function */

function extend(subClass,superClass){
	var Func = function(){} ;
	Func.prototype = superClass.prototype ;
	subClass.prototype = new Func() ;
	subClass.prototype.constructor = subClass ;
} ;

/*-----Example-----*/


/* Class Person */
function Person(name){
	this.name = name ;
} ;

Person.prototype.getName = function(){
	return this.name ;
} ;

/* Class Author */

function Author(name,books){
	Person.call(this,name) ;
	this.books = books ;
} ;

extend(Author,Person) ;

Author.prototype.getBooks = function(){
	return this.books ;
} ;
 
   发表时间:2011-04-20  
为何去掉了这一句:
subClass.superclass = superClass.prototype;

个人觉得还是有必要的,一是子类构造器里面避免显式直接引用父类,更重要的是重写父类方法。
Author.prototype.getName = function() {
    return 'author is ' + Author.superclass.getName();
};
0 请登录后投票
   发表时间:2011-04-30   最后修改:2011-04-30
为什么要新建一个Func, 直接像下面这样不可以吗?
subClass.prototype = new superClass()

0 请登录后投票
   发表时间:2011-04-30  
zhex 写道
为什么要新建一个Func, 直接像下面这样不可以吗?
subClass.prototype = new superClass()


我認為是避免觸發一次superClass
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics