<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        javascript原型鏈繼承方式用法和缺點實例詳解

        來源:懂視網 責編:小采 時間:2020-11-27 20:15:44
        文檔

        javascript原型鏈繼承方式用法和缺點實例詳解

        javascript原型鏈繼承方式用法和缺點實例詳解:原型鏈方式function Person(){ this.name = 'Simon'; } Person.prototype.say = function(){ alert('My name is '+this.name); } function F2E(id){ this.id = id; this.showId =
        推薦度:
        導讀javascript原型鏈繼承方式用法和缺點實例詳解:原型鏈方式function Person(){ this.name = 'Simon'; } Person.prototype.say = function(){ alert('My name is '+this.name); } function F2E(id){ this.id = id; this.showId =

        原型鏈方式

        function Person(){
         this.name = 'Simon';
        }
        Person.prototype.say = function(){
         alert('My name is '+this.name);
        }
        function F2E(id){
         this.id = id;
         this.showId = function(){
         alert('Good morning,Sir,My work number is '+this.id);
         }
        }
        F2E.prototype = new Person();
        
        var simon = new F2E(9527);
        simon.say();
        simon.showId();
        alert(simon.hasOwnProperty('id')); //檢查是否為自身屬性

        接下來按照上面的例子來理解以下js原型鏈概念:

        原型鏈可以理解成:js中每個對象均有一個隱藏的__proto__屬性,一個實例化對象的__proto__屬性指向其類的prototype方法,而這個prototype方法又可以被賦值成另一個實例化對象,這個對象的__proto__又需要指向其類,由此形成一條鏈,也就是前面代碼中的

        F2E.prototype = new Person()

        這句是關鍵。js對象在讀取某個屬性時,會先查找自身屬性,沒有則再去依次查找原型鏈上對象的屬性。也就是說原型鏈的方法是可以共用的,這樣就解決了對象冒充浪費內存的缺點。

        下面再來說缺點:
        缺點顯而易見,原型鏈方式繼承,就是實例化子類時不能將參數傳給父類,也就是為什么這個例子中function Person()沒有參數,而是直接寫成了this.name=”Simon”的原因。下面的代碼將不能達到預期的效果:

        function Person(name){
         this.name = name;
        }
        Person.prototype.say = function(){
         alert('My name is '+this.name);
        }
        function F2E(name,id){
         this.id = id;
         this.showId = function(){
         alert('Good morning,Sir,My work number is '+this.id);
         }
        }
        F2E.prototype = new Person();
        
        var simon = new F2E("Simon",9527);
        simon.say();
        simon.showId();
        
         
        function Person(name){
         this.name = name;
        }
        
        Person.prototype.say = function(){
         alert('My name is '+this.name);
        }
        
        function F2E(name,id){
         this.id = id;
         this.showId = function(){
         alert('Good morning,Sir,My work number is '+this.id);
         }
        }
        
        F2E.prototype = new Person(); //此處無法進行傳值,this.name或者name都不行,直接寫F2E.prototype = new Person('wood')是可以的,但是這樣的話simon.say()就變成了My name is wood
        
        var simon = new F2E("Simon",9527);
        simon.say(); //彈出 My name is undefined
        simon.showId();

        最后,總結一下自認為較好的繼承實現方式,成員變量采用對象冒充方式,成員方法采用原型鏈方式,代碼如下:

        function Person(name){
         this.name = name;
        }
        Person.prototype.say = function(){
         alert('My name is '+this.name);
        }
        function F2E(name,id){
         Person.call(this,name);
         this.id = id;
        }
        F2E.prototype = new Person(); 
        //此處注意一個細節,showId不能寫在F2E.prototype = new Person();前面
        F2E.prototype.showId = function(){
         alert('Good morning,Sir,My work number is '+this.id);
        }
        var simon = new F2E("Simon",9527);
        simon.say();
        simon.showId();

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        javascript原型鏈繼承方式用法和缺點實例詳解

        javascript原型鏈繼承方式用法和缺點實例詳解:原型鏈方式function Person(){ this.name = 'Simon'; } Person.prototype.say = function(){ alert('My name is '+this.name); } function F2E(id){ this.id = id; this.showId =
        推薦度:
        標簽: 使用 js 實例
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产精品视频免费一区二区三区| 91大神在线免费观看| 成年18网站免费视频网站 | 亚洲日韩一中文字暮| 五月天国产成人AV免费观看| 四虎在线免费播放| 亚洲精品无码av片| 美女黄网站人色视频免费国产| 亚洲国产成人99精品激情在线| 女人18毛片a级毛片免费视频| 亚洲伊人久久大香线蕉结合| 国产精品成人免费视频网站京东 | 亚洲AV噜噜一区二区三区| 老司机永久免费网站在线观看| 国产亚洲视频在线观看网址| 亚洲 无码 在线 专区| 中文日本免费高清| 亚洲人成电影亚洲人成9999网| 最近2022中文字幕免费视频| 精品久久亚洲中文无码| 日韩精品免费电影| www成人免费视频| 成年轻人网站色免费看| 亚洲妇女无套内射精| 免费人成视频在线观看视频| 国产精品1024在线永久免费| 亚洲成年轻人电影网站www| 国产四虎免费精品视频| 亚洲国产综合AV在线观看| 亚洲人午夜射精精品日韩| 国产婷婷成人久久Av免费高清| 亚洲春色另类小说| 亚洲av区一区二区三| a级毛片免费完整视频| 亚洲乱码卡一卡二卡三| 91精品国产免费网站| 亚洲AV永久无码精品网站在线观看 | 2022久久国产精品免费热麻豆| 亚洲国产成人无码AV在线影院| 亚洲色婷婷综合久久| 一级特黄aaa大片免费看|