深入理解js繼承

2021-08-11 05:15:35 字數 2104 閱讀 8045

①var nam =

②var man1 = {};

man1.name = "hkj";

man1.age = 20;

function man(name,age)

}var man2 = man("hkj",20);

function man(name,age)

}var man3 = new man3("hkj",20);

vat man4 = new man4("h",21);

alert(man3.age);

alert(man4.name);

由建構函式生成的物件都具有同乙個constructor屬性,指向建構函式

man3.construcor == man4.constructor == man

可用instanceof運算子判斷物件與類的關係

alert(man3 instanceof man);//true

缺點:每個不同物件都存在乙個相同的work方法,但每次生成物件時work都會生成一次,占用記憶體

prototype為建構函式的乙個屬性,指向另乙個物件,該物件所有屬性方法都會被建構函式例項繼承。一般用來存放公有方法和屬性。

function man(name,age)

man.prototype.work = function()

var man5 = new man("hkj",20);

man5.work();

alert(man.prototype.isprototypeof(man5)); //true     判斷prototype與例項之間的關係

alert(man.hasownproperty("name"));  //true       判斷是否是本地屬性

alert("name" in man5);   //true     判斷是否含有某個屬性

function people()

function man(name)

var man=new man("hkj");

alert(man.type);

function person()

function man(name)

man.prototype=new person();  //將man的prototype指向person例項

man.prototype.constructor=man;  //手動糾正由上一行導致man的建構函式為person的錯誤

var man=new man("hkj");

alert(man.type);

function person(){}

person.prototype.type="人";

function man(){}

man.prototype = person.prototype;

man.prototype.constructor=man;

var man=new man();

alert(man.type);

缺點:man和person的prototype變成了同乙個,任何對子類的修改將影響到父類。而且後面的手動糾正也將person的建構函式變成了man的建構函式

function person(){}

person.prototype.type="人";

function man(){}

function f(){}

f.prototype=perosn.prototype;

man.prototype=new f();

man.prototype.constructor=man();

方法封裝:

function extend(child, parent) ;

f.prototype = parent.prototype;

child.prototype = new f();

child.prototype.constructor = child;

child.uber = parent.prototype;   //連線child與parent,備用性質

}function extend2(child, parent)

c.uber = p;

}

js深入理解 一

1if a b 兩者等價 a b alert hello word 2.給eval取別名var a 111 var b eval var c b a alert c 輸出 111 3.刪除元素 不能刪除 var語句宣告的變數 var o delete o.x alert o.x 輸出 undefin...

js深入理解(二)

1.函式閉包var scope global scope function checkscope return f checkscope 輸出local scope var scope global scope function checkscope return f checkscope 輸出lo...

js深入理解(三)

1.物件的三個屬性 原型屬性 object.getprototypeof a 獲取a的原型 a.constructor.prootype 獲取a的原型 推薦 o.isprototypeof a 判讀o是否是a的原型 類屬性 function classof o classof o 輸出object ...