成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

論Javascript的類繼承

開發(fā) 前端
本文介紹了Javascript中的類繼承,從無(wú)參和有參兩個(gè)方面來(lái)介紹的,一起來(lái)看,希望對(duì)你有幫助。

說到Javascript類繼承,就必然離不開原型鏈,但只通過原型鏈實(shí)現(xiàn)的繼承有著不少缺陷。

無(wú)參數(shù)類繼承的問題

先看一段示例代碼,實(shí)現(xiàn)B繼承于A:

 

  1. function A() {  
  2. }  
  3. A.prototype.a1 = function() {  
  4. };  
  5. function B() {  
  6. }  
  7. B.prototype = new A();  
  8. B.prototype.b1 = function() {  
  9. };  
  10. var b = new B();  
  11. alert(b.constructor == A); // true  
  12. alert(b.constructor == B); // false 

 

這段代碼的主要問 題是:

1、需要實(shí)例化A作為B的原型,此時(shí)就執(zhí)行了A的構(gòu)造函數(shù)。但按照面向?qū)ο蟮囊?guī)則,實(shí)例化B之前,B及其父類A的構(gòu)造函數(shù)都不應(yīng)該執(zhí)行。

2、更改了B的prototype,導(dǎo)致b.constructor不是B而是A。

有參類繼承的問題

假設(shè)A和B都有兩個(gè)字符串參數(shù)s1和s2,A中計(jì)算了兩段字符串的總長(zhǎng)度,B直接以s1、s2為參數(shù)調(diào)用A:

 

  1. function A(s1, s2)   
  2. {  
  3. this.totalLength = s1.length + s2.length;  
  4. }  
  5. A.prototype.a1 = function()   
  6. {  
  7. };  
  8. function B(s1, s2)   
  9. {  
  10. }  
  11. B.prototype = new A();  
  12. B.prototype.b1 = function()   
  13. {  
  14. };  
  15. new B(“ab”, “123″); 

 

可以看到,這段代碼中根本沒有辦法把s1和s2傳到A,而又因?yàn)閷?shí)例化A作為B的原型時(shí)沒有 參數(shù),所以出現(xiàn)了異常:

 

  1. s1 is undefined 

 

解決方案

s1 和s2的作用域只在B內(nèi),要把它們傳到A,就只能在B中操作,借助函數(shù)的apply方法就可以實(shí)現(xiàn)之:

 

  1. function B(s1, s2)   
  2. {  
  3. A.apply(this, arguments);  
  4. alert(this.totalLength);  

 

接下來(lái)的問題就是如何把A的方法添加到B的原型中去。這也不 難,只要遍歷A.prototype,把方法復(fù)制到B.prototype即可。要注意的是,對(duì)于同名的方法,自然是子類優(yōu)先(重載), 因而不能覆蓋:

 

  1. for (var m in A.prototype)   
  2. {  
  3. if (!B.prototype[m])   
  4. // 父類不能覆蓋子類的方法  
  5. B.prototype[m] = A.prototype[m];  
  6. }  

【編輯推薦】

  1. Javascript面向?qū)ο缶幊蹋ǘ├^承
  2. Javascript面向?qū)ο缶幊蹋ㄈ┓呛瘮?shù)對(duì)象的繼承
  3. JavaScript對(duì)象及繼承教程之內(nèi)置對(duì)象
  4. 一個(gè)字概括:繼承了責(zé)任感
  5. 8.3.3 配置文件的繼承層次結(jié)構(gòu)
責(zé)任編輯:于鐵 來(lái)源: UED TEAM
相關(guān)推薦

2009-07-08 17:42:26

this屬性

2009-07-08 17:51:45

constructor

2009-07-08 17:48:18

prototype屬性

2017-02-13 11:45:19

JavaScriptfor循環(huán)

2009-01-04 09:08:30

面向?qū)ο?/a>繼承接口

2011-08-31 14:48:33

JavaScript

2012-02-14 09:45:02

JavaScript

2011-07-07 13:39:14

Cocoa 框架

2011-06-07 08:58:31

javascript

2011-08-24 13:56:27

JavaScript

2011-03-10 14:19:56

JavaScript

2021-12-04 11:17:32

Javascript繼承編程

2010-01-21 13:48:30

C++基類

2013-09-18 14:01:46

JavaScript

2009-12-07 16:07:03

PHP類的繼承

2017-07-21 09:40:35

Python類、繼承和多態(tài)

2011-07-08 10:25:55

JavaScript

2011-05-25 10:59:26

Javascript繼承

2017-06-26 10:35:58

前端JavaScript繼承方式

2020-04-29 14:40:19

JavaScript繼承編程語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人无遮挡毛片免费看 | 天色综合网 | 欧美日本韩国一区二区 | 日韩欧美专区 | 激情在线视频网站 | 欧美精品欧美精品系列 | 国产免费xxx | www.youjizz.com日韩 | 男女激情网站免费 | 超碰成人免费观看 | 91精品国产一区二区在线观看 | 免费在线一区二区三区 | 久久精品欧美一区二区三区不卡 | 国精产品一区二区三区 | 亚洲视频在线观看一区二区三区 | 亚洲精品电影网在线观看 | 亚洲国产精品区 | 国产欧美精品在线观看 | 九九九久久国产免费 | 日韩精品一区二区三区中文字幕 | 久久综合一区二区三区 | 亚洲免费人成在线视频观看 | 草比网站 | 天天爽夜夜操 | 狠狠插天天干 | 999视频在线播放 | 天天av天天好逼 | 亚洲网在线 | 99免费看 | 亚洲午夜三级 | 日韩久久精品电影 | 国产一区久久 | 精品久久久久久久久久久久久 | 日韩精品a在线观看图片 | 美女天天干| 欧美一区二区三区视频在线观看 | 一区二区三区欧美 | 一区二区免费在线视频 | 日本淫视频| 久久久久中文字幕 | 欧美福利|