js继承优化
在看《js設(shè)計(jì)模式》中,作者提到了js中的兩種繼承方式:類繼承 或 原型繼承,或許是本人才疏學(xué)淺,竟發(fā)現(xiàn)一些問(wèn)題。
一、類繼承
思路:作者的思路是使用基于類來(lái)繼承,并且做了一個(gè)extend函數(shù),在第一時(shí)間就吸引了我的眼球,函數(shù)如下:
1?function?extend(subClass,?superClass){2??????var?F?=?function(){};
3??????F.prototype?=?superClass.prototype;
4??????subClass.prototype?=?new?F();
5??????subClass.prototype.constructor?=?subClass;
6?}
在js中sunClass和superClass分別是子類和父類的名字(即函數(shù)的名字).
在使用的時(shí)候作者的思路類似是這樣:
?1?function?Person()?2?{
?3?????this.attr1?=?1;
?4?????this.attr2?=?2;
?5?????this.attr3?=?3;
?6?}
?7?
?8?function?Author()
?9?{
10?????Person.apply(this);
11?}
12?
13?extend(Author,Person);
?
但是我在測(cè)試中發(fā)現(xiàn)一個(gè)問(wèn)題,在上面的extend函數(shù)的執(zhí)行時(shí)間為0。仔細(xì)看看,其實(shí)這個(gè)類繼承僅僅的核心部分為Author函數(shù)中的
Person.apply(this);
extend函數(shù)并沒(méi)有起到作用?!
?
二、原型繼承
這種繼承基于一個(gè)父類的實(shí)例對(duì)象,只是把A.prorotype = obj;做了個(gè)函數(shù)封裝,得到以下的clone函數(shù):
1?function?clone(parentObj)2?{
3????function F()?=?{};
4????F.prototype?=?parentObj;
5????return?new?F();
6?}
?
轉(zhuǎn)載于:https://www.cnblogs.com/return/archive/2009/10/30/1593285.html
總結(jié)
- 上一篇: CentOS 桌面启动无登录界面
- 下一篇: highcharts 怎么去掉鼠标悬停效