// 建構函式
function
obj(uname, age)
}// 建立例項物件
var test =
newobj
('uname',18
);// 使用方法
test.
method()
;//obj.*** =
'boy'
建構函式名字的首字母要大寫,且與new一起使用
建構函式中的屬性方法被叫做成員。其中:
(1)靜態成員:在建構函式本身上新增的成員,如***,靜態成員只能通過建構函式來訪問;
(2)例項成員:在建構函式內部通過this新增的,如uname、age、method,只能通過例項化的物件來訪問;
每乙個建構函式中都有乙個prototype原型物件,把不變的方法直接定義在prototype物件上,所有的例項物件就可以共享這些方法。
例項物件在構造時,本身會有乙個__proto__屬性指向prototype原型物件,這樣構造的例項物件就可以使用prototype建立的方法了。
// 建構函式
function
obj(uname, age)
obj.prototype.
method
=function()
obj.prototype.*** =
'boy'
// 建立例項物件
var test1 =
newobj
('uname',18
);var test2 =
newobj
('uname',19
);// 驗證兩個例項物件的儲存空間是一致的
console.
log(test1.__proto__===obj.prototype)
;// return true
console.
log(test1.
method()
===test2.
method()
);// return true
例項物件原型__proto__和建構函式原型物件prototype中都有constructor屬性,稱為建構函式,因為他指回建構函式本身。它主要用來記錄該物件引用哪個建構函式,可以讓原型物件指向原來的建構函式。
// 建構函式
function
obj(uname, age)
// 若以物件的方式建立方法,原來的constructor將會被覆蓋掉,因此需要用constructor指回建構函式(constructor: obj,)
obj.prototype =
, method2:
function()
}// 建立例項物件
var test =
newobj
('uname',18
);// 驗證是否指回obj
console.
log(obj.prototype.constructor)
;console.
log(test.__proto__.constructor)
;
繼承父類屬性
function
father
(uname, age)
function
son(uname, age, score)
繼承父類方法
function
father
(uname, age)
father.prototype.
money
=function()
function
son(uname, age, score)
// 繼承父類方法
son.prototype =
newfather()
;son.prototype.constructor = son;
// 建立obj類
class
obj// 新增方法
method()
}// 利用類建立物件
var test =
newobj
('name',18
);
class
father
// 新增父類的方法
father_method()
father_sum()
}class
sonextends
father
// 用super關鍵字呼叫父類的普通方法
son_method()
}// 利用類建立物件
var son =
newson(1
,2);
son.
father_method()
;son.
sum();
son.
son_method()
;
注意:
類中沒有變數提公升,因此必須先定義類,再進行例項化
constructor中的this指向的是例項物件,方法中的this指向的是呼叫者
ES5和ES6的繼承
在es6之前,js的函式和物件是混在一起的,通過new呼叫函式,就是把函式當作物件,建立例項。funciton person name,age person.prototype.getname function person.prototype.setname function name var p...
ES5和ES6的繼承
es5繼承 建構函式 原型和例項的關係 每乙個建構函式都有乙個原型物件,每乙個原型物件都有乙個指向建構函式的指標,而每乙個例項都包含乙個指向原型物件的內部指標,1 function supertype 4 supertype.prototype.getsupervalue function 7 fu...
es5繼承與es6繼承
es5中的繼承方式 1.原型鏈繼承 缺點 1.建立例項時無法像父類建構函式傳遞引數 2.因為指定了原型,所以不能實現多繼承 3.父類建構函式上的屬性被所有子類共用,給原型上的屬性賦值會改變其他子類的屬性值 es5 const parent function name,age parent.proto...