怎么在JavaScript中使用prototype實現偽繼承

這篇文章給大家介紹怎么在JavaScript中使用prototype實現偽繼承,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

為宣漢等地區用戶提供了全套網頁設計制作服務,及宣漢網站建設行業解決方案。主營業務為成都做網站、網站設計、宣漢網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

JavaScript是什么

JS是JavaScript的簡稱,它是一種直譯式的腳本語言,其解釋器被稱為JavaScript引擎,是瀏覽器的一部分,主要用于web的開發,可以給網站添加各種各樣的動態效果,讓網頁更加美觀。

第一種繼承 (屬性繼承)

  //該函數相當于是一個構造器,也是一個偽類
  function Fn(){
    this.a = 4;
    this.b = 5;
    this.log = function(){
      console.log(this.a,this.b);
    }
  }
  function Fn1(){
    Fn.call(this);//調用父類的構造函數
  }
  Fn1.prototype = Fn.prototype;
  var fn = new Fn();
  var fn1 = new Fn1();
  //由此可見Fn1 是fn1的子類。
  fn1 instanceof Fn; // true
  fn instanceof Fn1; // true
  fn.a = 5;
  //由此可見Fn1 繼承了 Fn得所有屬性和方法
  //而是是復制了一份Fn的屬性和方法,并不是對象的引用。
  console.log(fn.a); // 5
  console.log(fn1.a); // 4
  this.log(); // 4 5

總結:這種繼承,是重新拷貝一份放入內存中,他們的值互相獨立,修改一個不會改變另一個。

第二種繼承 原型繼承(prototype)

  function Fn(){}
  Fn.prototype.data = {
    name: 'zhangsan'
  }
  Fn.prototype.getName = function(){
    return this.data.name;
  }
  function Fn1(){}
  //原型鏈繼承
  Fn1.prototype = Fn.prototype;
  var fn = new Fn();
  var fn1 = new Fn1();
  //所用Fn1 繼承了 Fn
  fn1 instanceof Fn;//true
  console.log(fn1.getName()); // zhangsan
  console.log(fn.getName()); // zhangsan
  //修改了fn的name屬性值
  fn.data.name = 'lisi';
  // 由此我們可看出 原型鏈繼承 是 引用繼承
  //不會重新拷貝一份變量。就像對象的引用一樣。
  console.log(fn.getName()); // lisi
  console.log(fn1.getName()); // lisi

兩種類的寫法造成示例的區別

  //第一種
  function Fn(){
    this.a = 4;
    this.b = 5;
    this.log = function(){
      console.log(this.a,this.b);
    }
  }
  var fn1 = new Fn();
  var fn2 = new Fn();
  fn1.a = 1;
  //由此可以看出兩個對象互不影響
  //說明每個對象里都存在一份a和b
  fn1.log(); // 1 5
  fn2.log(); // 4 5
  //第二種
  function Fn(){}
  fn.prototype.name = 'zhangsan';
  fn.prototype.data = {
    a: 4,
    b: 5
  }
  fn.prototype.log = function(){
    console.log(this.data.a,this.data.b);
  }
  var fn1 = new Fn();
  var fn2 = new Fn();
  fn1.a = 1;
  //由此可見就算是不同的示例他們他們所指向的值是同一個。
  fn1.log();//1 5
  fn2.log();//1 5
  fn2.name = 'lisi';
  //這里fn1.name并沒有被修改
  console.log(fn1.name); //zhangan
  console.log(fn2.name); // lisi

關于怎么在JavaScript中使用prototype實現偽繼承就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享文章:怎么在JavaScript中使用prototype實現偽繼承
瀏覽路徑:http://m.kartarina.com/article0/pphcio.html

成都網站建設公司_創新互聯,為您提供商城網站Google靜態網站品牌網站制作App開發網站營銷

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 日韩精品无码一区二区三区不卡 | 97无码人妻福利免费公开在线视频| 亚洲精品无码成人AAA片| 中文字幕无码不卡在线| 日韩免费人妻AV无码专区蜜桃| 无码久久精品国产亚洲Av影片| 无码中文2020字幕二区| 亚洲2022国产成人精品无码区| 日韩视频无码日韩视频又2021| 亚洲av日韩av无码| 国模无码视频一区| 少妇无码AV无码专区线| 人妻无码第一区二区三区 | 人妻无码中文字幕| 亚洲一区二区三区无码国产| 久久人妻少妇嫩草AV无码蜜桃| 少妇仑乱A毛片无码| 亚洲av永久无码精品漫画 | 色综合AV综合无码综合网站| 无翼乌工口肉肉无遮挡无码18| 久久精品无码专区免费青青| av无码人妻一区二区三区牛牛 | 东京热人妻无码人av| 亚洲国产成人无码AV在线| 无码夫の前で人妻を侵犯| 无码精品A∨在线观看十八禁 | 亚洲欧洲美洲无码精品VA | 无码少妇一区二区浪潮免费| 人妻中文字系列无码专区| 亚洲AV无码专区国产乱码电影| 亚洲av无码成人精品区| 人妻无码一区二区视频| 国产精品白浆无码流出| 无码人妻aⅴ一区二区三区| 无码夫の前で人妻を犯す中字| 亚洲av无码国产精品夜色午夜| 一本大道东京热无码一区| 亚洲国产精品无码久久久秋霞2 | 中文字幕无码无码专区| 中文字幕无码乱人伦| 久久久久亚洲av无码专区蜜芽|