js 物件導向 封裝

2021-10-19 07:33:21 字數 2241 閱讀 5542

物件導向:

程式中都是先用物件解構來描述現實中乙個具體事物的屬性和功能,然後按需使用物件中的屬性和功能。

為了大量資料的使用和維護

封裝,繼承,多型

一、封裝

建立乙個物件,集中儲存現實中乙個事物的屬性和功能

為了大量資料的使用和維護

何時:今後只要使用物件導向,第一步都是建立物件,集中儲存事物的屬性和功能。

1.用 建立

var 物件名=

} 說明:方法、函式、function

a.所有function都可以叫做函式

b.只要儲存在物件中的函式 (function) 才叫方法

訪問物件中的屬性和方法:

a.訪問物件中的屬性:物件.屬性名

b.呼叫物件中的方法:物件.方法名 //報錯:屬性名未定義

原因:物件中的方法,作用域鏈只包含方法內和window,無權擅自進入物件中查詢任何屬性。

好的做法可以用this代替,專門引用正在呼叫當前函式的點 . 前的物件。

何時:今後只要物件自己的方法,想訪問物件內自己的屬性或其他方法時,都必須加this

var lilei=

,今年$ ");

}}lilei.

intr()

;

2.用new建立

a.var 物件名=new object();

b.強行向空物件中新增新屬性

物件.新屬性=屬性值

物件.方法名=function()

揭示了乙個本質:js中所有的物件底層都是關聯陣列,可以用點進行訪問

c.也都可以通過強行賦值的方式為乙個不存在的成員/屬性賦值,不但不會報錯,而會自動建立該成員/屬性

今後:給乙個物件中新增新成員只有乙個方法:強行賦值==>物件名.新屬性名=屬性值

d.判斷是否包含某個屬性,物件.屬性名!===undefined 說明包含該屬性

e.都可以用for in 迴圈遍歷

轉殖: 1.先準備乙個空物件

2.遍歷舊物件中每個屬性

3.每遍歷乙個新屬性,就為新物件新增同名屬性,屬性值為舊物件屬性的值

4.返回轉殖好的物件

var lilei=

//傳乙個舊物件

function

clone

(oldobj)

;//2.遍歷舊物件中的每個屬性

for(

var 舊屬性名 in oldobj)

//4.返回轉殖好的物件

return newobj;

}var lilei2=

clone

(lilei)

; console.

log(lilei2)

;//_ _proto_ _object

console.

log(lilei)

;//_ _proto_ _object

3.用建構函式反覆建立多個相同結構不同屬性值的物件

建構函式:專門定義同一型別的多個物件的統一結構的函式

a.定義建構函式:

function 型別名(形參1,形參2,....)

} b.呼叫建構函式反覆建立多個相同結構的物件

var 物件名=new 型別名(屬性值1,屬性值2);

function

student

(sname,sage)

,今年$');

}}var lilei=

newstudent

('lilei',11

);var hmm=

newstudent

('lilei',12

);

原理:

new做了4件事:

1.建立了乙個新的空物件

2.為子物件自動新增屬性_ _proto_ _,指向建構函式的原型物件

3.呼叫建構函式,new會自動將建構函式中的this指向剛剛建立新的空物件。

結果:建構函式中每一句this.屬性名=形參,都變成新物件.屬性名=形參。

因為新物件中什麼屬性都沒有,每一句新物件.屬性名=形參,都會為新物件強行新增新屬性。

建構函式中規定的屬性和方法,都會強行新增到新物件中。

4.返回new剛建立的新物件位址儲存在左邊的變數中。

js 物件導向 封裝

看了阮一峰大神的部落格,自己寫了js物件導向這一部分的總結 js物件導向部分分為幾個部分 1.本文介紹物件導向 封裝 2.物件導向 原型鏈 3.物件導向 建構函式的繼承 4.物件導向 非建構函式的繼承 ecmascript支援物件導向程式設計,但不使用類或者介面。物件可以在 執行過程中建立和增強,因...

js物件導向 封裝

萬物皆物件!一 生成例項物件 原始模式 有乙隻貓我們把它看成乙個物件,它具有兩個屬性 名字 顏色 var cat 下面我們生成兩個例項物件 var cat1 cat1.name 黑貓 按照原型物件的屬性賦值 cat1.color 黑色 var cat2 cat2.name 白貓 cat2.color...

JS難點 物件導向 封裝

我覺得js的難點之一就是物件導向程式設計。它在寫法上比面向過程相對來說複雜一些 從廣義上說,一切皆物件 狹義上說,是一種復合資料型別object。直接字面量 var person person.height 180cm person.interset function 使用關鍵字new new ob...