function parent()
parent.prototype.parentvalue = function()
function children()
//將children的原型指向parent的乙個例項,完成繼承
children.prototype = new parent();
children.prototype.childrenvalue = function()
var c1 = new children();
var p1 = new parent();
c1.parentvalue();
c1.childrenvalue();
結果:parent
children
這是乙個基於原型鏈的繼承方式,當然很重要的還是它的記憶體模型
當剛剛建立函式的時候,parent和children各自指向自己的原型
此時parent和children沒有任何關係
再下一步,重寫繼承鏈關係,將children的prototype屬性指向parent的乙個例項,這樣parent空間裡面的屬性就會複製到例項中乙份,而例項的_prop_屬性也會指向
原型物件,從擁有其方法,這樣就完成了繼承
當呼叫parentvale()的時候,首先在自己空間裡面尋找parentvalue方法,沒有找到,然後呼叫prototype找到原型的指向,發現原型中
沒有這個方法,但是原型中有_prop_屬性,於是呼叫_prop_的指向找到parent prototype,找到這個方法,然後在方法中呼叫this.parentname的時候
再次尋在,發現在自己空間中沒有,但是在原型的指向中找到了parentname
缺點
function parent(parentname)
function children(childrenname)
children.prototype = new parent("parent"); //僅僅只能在此處來為父類的屬性賦值
//有很大的侷限性
還有乙個問題,如果父類中有引用型別,而在子類中對其進行應用,並賦值的,就會改變其,這樣的方式就像是將屬性仍然定義在原型中一樣
function parent(parentname)
parent.prototype.say = function()
function children(childrenname)
children.prototype = new parent("parent");
var c1 = new children("張三");
var c2 = new children("李四");
c1.arr.push("a");
c1.say();
c2.say();
結果:h,d,a
h,d,a
JavaScript高階 原型
1.什麼是原型 原型是 js 中非常特殊乙個物件,當乙個函式建立之後,會隨之就產生乙個原型物件,當通過這個函式的建構函式建立了乙個具體的物件之後,在這個具體的物件中就會有乙個屬性指向原型。第一種狀態 定義了乙個物件 function person 第二種狀態,這樣賦值就會賦在原型物件中 使用原型來給...
Javascript 高階 封裝
js中處處是物件,物件導向的第一步當然就是封裝了。由於js中沒有類的概念,所以封裝起來也比較麻煩。以下介紹兩種js的封裝。1 使用約定優先的原則,將全部的私有變數以 開頭 看完 是不是有種被坑的感覺。只把全部的變數以 開頭,事實上還是能夠直接訪問的,這能叫封裝麼。當然了。說了是約定優先嘛,這樣的方式...
javascript 高階用法
為什麼 typeof 不靠譜,無法將陣列從物件中區分出來,instanceof 有特殊情況,在iframe存在的情況下無法判斷另乙個iframe內的陣列 如何做 object.prototype.tostring call arr 特點 鏈式的settimeout在有定時器時不會新增到等待佇列而是繼...