js繼承之 原型式繼承

2021-06-07 14:48:54 字數 782 閱讀 9538

借助原型可以基於已有的物件建立新物件,同時還不必因此常見自定義型別。為了達到這個目的,他給出了如下函式:

function object(o)

f.prototype = o;

return new f();

}

在object()函式內部,先建立乙個臨時性的建構函式,然後將傳入的物件作為這個建構函式的原型,最後返回了這個臨時型別的乙個新例項。

從本質上講,object()對傳入其中的物件執行了一次淺複製。來看下面的例子:

var person = ;

vrar anotherperson = object(person);

anotherperson.name = greg";

anotherperson.friends.push("rob");

var yetanotherperson = object(person);

yetanotherperson.name = "linda";

yetanoterperson.friends.paush("barbie");

alert(person.ridends);//"shelby,court,van,rot,barbie"

在沒有必要興師動眾地建立建構函式,而只想讓乙個物件與另乙個物件保持類似的情況下,原型式繼承是完全可以勝任的。

不過別忘了,包含引用型別值的屬性始終都會共享相應的值,就像使用原型模式一樣。

原型式繼承

var person alert person.name li function create obj 建立空的建構函式 df.prototype obj 將引數物件的屬性方法賦給建構函式 return new df 返回該建構函式的例項物件 var man create person 試過直接將p...

JavaScript 繼承 原型式繼承

繼承 原型式繼承 原型式繼承並沒有使用嚴格意義上的建構函式,是通過借助原型基於已有的物件建立新物件,同時還不必建立自定義型別。使用原型式繼承的主要思路如例1所示 例1 function object o f.prototype o return new f 將例1進行分析可知 在object函式的內...

繼承方式四 原型式繼承

道格拉斯 克羅克福德在一篇文章中介紹了一種實現繼承的方法,這種方法並沒有使用嚴格意義上的建構函式。它的想法是借助原型可以基於已有的物件建立新物件,同時還不必因此建立自定義型別。為了達到這個目的,他給出了如下函式。function object o f prototype o return newf ...