(一)封裝:將現實中乙個事物的屬性和功能集中定義在乙個物件中。(建立物件)
建立物件的3種方式:
1.直接量方式:(建立乙個單獨的物件)
var obj=
2. 用new方式:
var obj=new object();
obj.屬性名=值;
obj.方法名=function()
3.反覆建立多個相同結構的物件的方式:2步
①定義建構函式:
function 型別名(屬性引數列表)*/
② 用new呼叫建構函式: 例項化乙個物件。
var obj=new 型別名(屬性值列表);
/*new: 1.建立新的空物件;2.設定新物件的__proto__繼承建構函式的原型物件;3.用新物件呼叫建構函式,為新物件新增規定的屬性和方法。4.將新物件的位址儲存到變數中 */
js中一切物件底層都是hash陣列。
(二)繼承:父物件中的成員,子物件無需重複定義,即可直接使用。(**重用,節約記憶體)
js中的繼承都是原型繼承。
原型物件:集中儲存一類子物件共有成員的父級物件。
原型鏈: 由各級物件的__proto__屬性逐級繼承,形成的鏈式結構。(原型鏈控制著物件中屬性的使用順序)
1. 判斷指定"屬性名"是否是obj的自有屬性: var bool=obj.hasownproperty("屬性名")
2. 判斷是否是共有屬性: !obj.hasownproperty("屬性名") &&("屬性名" in obj)
3. 獲取原型物件: 2種方式: 建構函式.prototype;object.getprototypeof(child)
4. 刪除屬性: delete 物件.屬性名
5. 判斷乙個物件是不是陣列型別:
1. 判斷father是否是child的原型鏈上的父級物件:father.isprototypeof(child);
2. 判斷child是否是建構函式的例項:child instanceof 建構函式;
3. 輸出物件的內部屬性class: object.prototype.tostring.call(obj);
4. 判斷obj是否是陣列型別: array.isarray(obj)
如何自定義繼承: 3種:(三)多型:
重寫(override):如果子物件覺得父物件繼承來的成員不好用,可子定義同名的自有成員,來覆蓋父物件的成員。
OOP物件導向三大特點
一 封裝 將現實中乙個事物的屬性和功能集中定義在乙個物件中。建立物件 建立物件的3種方式 1.直接量方式 建立乙個單獨的物件 var obj 2.用new方式 var obj new object obj.屬性名 值 obj.方法名 function 3.反覆建立多個相同結構的物件的方式 2步 定義...
OOP物件導向三大特點
一 封裝 將現實中乙個事物的屬性和功能集中定義在乙個物件中。建立物件 建立物件的3種方式 1.直接量方式 建立乙個單獨的物件 var obj 2.用new方式 var obj new object obj.屬性名 值 obj.方法名 function 3.反覆建立多個相同結構的物件的方式 2步 定義...
OOP物件導向三大特點
一 封裝 將現實中乙個事物的屬性和功能集中定義在乙個物件中。建立物件 建立物件的3種方式 1.直接量方式 建立乙個單獨的物件 var obj 2.用new方式 var obj new object obj.屬性名 值 obj.方法名 function 3.反覆建立多個相同結構的物件的方式 2步 定義...