欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript原型式繼承實(shí)現(xiàn)方法

 更新時(shí)間:2019年11月06日 16:58:47   作者:好多坨屎  
這篇文章主要介紹了JavaScript原型式繼承實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了JavaScript原型式繼承實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

在2006年,有個(gè)叫道格拉斯·克羅克福德的人寫了一篇文章,題目翻譯為中文就是JavaScript中的原型式繼承。在此文章里,他介紹了一種實(shí)現(xiàn)繼承的方法。他的想法是借助原型可以基于已有的對(duì)象創(chuàng)建新對(duì)象,同時(shí)還不必因此創(chuàng)建自定義類型。于是,他就寫下了如下的函數(shù):

function object(o){
    function F(){};
    F.prototype = o;
    return new F();
  }

實(shí)現(xiàn)方法如下:

//在object()函數(shù)的內(nèi)部,先創(chuàng)建了一個(gè)臨時(shí)性的構(gòu)造函數(shù),然后將傳入的對(duì)象作為這個(gè)構(gòu)造函數(shù)的原型,最后返回了這個(gè)臨時(shí)類型的一個(gè)新實(shí)例
  var person = {
    name:"Nick",
    friends:["xiaowang","xiaochen"]
  };
  var person1 = object(person);
  person1.name = "Mike";
  person1.friends.push("xiaozhang");

  var person2 = object(person);
  person2.name = "lifei";
  person2.friends.push("xiaoli");
  console.log("person1:" + person1.name);
  console.log("person2:" + person2.name)
  console.log("person1 friends:" + person1.friends);
  console.log("person2 friends:" + person2.friends);
  console.log("all friends:" + person.friends);

運(yùn)行結(jié)果如下:

哇,怎么和原型鏈繼承模式一樣,不管你建了多少個(gè)實(shí)例,這個(gè)父類的引用值始終都會(huì)被這些個(gè)子類所創(chuàng)建的實(shí)例共享,所以這種繼承方式名為原型式繼承,和原型鏈就差一個(gè)字=。=

對(duì)咯,在ES5中,新增了Object.create()方法規(guī)范化了原型式繼承,它有兩個(gè)參數(shù),第一個(gè)參數(shù)是用作新對(duì)象原型的對(duì)象,第二個(gè)參數(shù)是可選的,是一個(gè)為新對(duì)象定義額外屬性的對(duì)象。在傳入一個(gè)參數(shù)的時(shí)候,這個(gè)方法是和object()方法一樣一樣的!

相關(guān)文章

最新評(píng)論