一:js物件導向
1:js是一門指令碼語言,不是物件導向的語言,它沒有類的概念,有物件的概念。
2:物件導向程式設計(
oop)和面向過程程式設計(
opp)的區別:
(1):面向過程以
事件為中心,將完成整個事件拆分成若干個步驟,按照步驟依次執行。
(2):物件導向以
事物為中心,完成某個需求需要哪些事物參與,側重點在於每個事物的特徵和行為的設計,完成需求只是該事物的乙個小功能。
物件導向程式設計**耦合度低,復用度好。
注意:所有物件導向的語言都有類和物件的概念,但是js只有物件的概念,沒有類的概念。
3:類和物件
物件是類的例項,類是物件的型別。
4:如何判斷所描述的是乙個物件還是類?
如果說出乙個事物,所有人的腦中想的是乙個例項,則是物件,反之,是類。
5:js中如何得到乙個物件?
(1):字面量(語法糖)獲取物件
字面量建立物件:
語法:var 物件名 = {};
每個物件都有屬於自己的屬性(特徵)和方法(行為),每個物件可以有多個屬性和方法,之間用逗號分隔;每個屬性或方法分為量部分:名和值,這兩者之間用「:」連線。
(2):建構函式獲取物件
6:如何使用乙個物件?
獲取物件中的屬性或者方法
語法:物件名.屬性名
物件名.方法名
this在元素的事件函式裡代指繫結事件的元素;this在物件的方法裡代指方法所屬的物件。
二:建構函式建立物件
1:建構函式的函式名首字母大寫
2:new關鍵字的作用:
(1):建立乙個空的物件
(2):讓空物件呼叫建構函式給自己賦值
(3):將賦值完成的物件返回 3:
原型物件:
每乙個建構函式都有乙個原型物件,為原型物件新增的所有的屬性和方法都能夠被以後使用該建構函式建立的物件所使用。 4:
prototype:
建構函式有乙個叫prototype的屬性,可以幫助我們訪問到它自己的原型物件。 5:
constructors:
原型物件的乙個屬性,該屬性指向原型物件所屬的建構函式。 6:
__proto__:
例項物件的乙個屬性,指向例項物件的建構函式擁有的原型物件。
每個例項物件在建立的時候系統都會在其內部初始化乙個屬性,叫__proto__,當我們想要訪問例項物件的某個屬性時,首先去例項物件的內部檢視是否存在這個屬性,如果沒有,系統會去例項物件的__proto__裡查詢是否存在,如果也不存在,系統會去這個例項的原型物件的__proto__裡繼續查詢,於是就這樣一直找下去,這種查詢的過程形成的鏈式關係就是原型鏈。
原型鏈
因為每個物件和原型都有原型,物件的原型指向原型物件,
而父的原型又指向父的父,這種原型層層連線起來的就構成了原型鏈。
三:繼承
1:什麼時候需要繼承?
當多個類(建構函式)之間有公共的父類,多個類有相同的屬性或者方法。
2:繼承的優點?
減少**量,公共的父類可以重複使用。
3:繼承的兩種方式:
(1):
通過改變建構函式中物件的指向實現繼承
call()方法語法:fun.call(引數一,引數二,…….)
引數一:想要變成的物件
引數二:引數
例:怎麼才能讓「貓」擁有「動物」的屬性或者方法?
//有乙個「動物」建構函式
function animal()
//有乙個「貓」建構函式
function cat(name, color)
var cat = new cat("加菲", "橘色");
console.log(cat.species);
(2):
通過原型鏈實現繼承
//有乙個「動物」建構函式
function animal()
//有乙個「貓」建構函式
function cat(name, color)
//使用prototype屬性。如果「貓」的原型物件指向了乙個animal的例項,那麼所有的「貓」的例項都會擁有animal的所有屬性或者方法了
cat.prototype = new animal();
//修復constructor問題
cat.prototype.constructor = cat;
var cat1 = new cat("tom", "藍色");
console.log(cat1);
js物件導向
物件導向是相對於面向過程而提出的程式設計思想 核心在於通過這種方法的設計出來的程式不再是機械的按照設定的步驟去執行,而是按照需要的步驟去執行。舉個例子 乙個人要吃飯,如果用的面向過程的話就必須執行吃飯前的一切行為,而物件導向則可以跳過之前的環節!建構函式 所謂的工廠方式 用來構造抽象物件,通過呼叫建...
js物件導向
js物件導向 一 什麼是物件 物件可以看成乙個屬性的集合。對像一般有屬性和方法構成,方法的實質是函式,而屬性的實質是變數。二 什麼是物件導向 物件導向可以理解為不需要去了解對像的內部結構,就可以使用它。像我們的date 對像的方法可以獲取和設定時間,但我們並不了解其內部原理。三 物件導向 抽風機 抽...
JS物件導向
原型模式的缺點是無法個性,就是如果一組屬性你不想共有,單獨使用原型模式是無法實現的。一種更簡單的原型模式,這種模式的特點是會重寫整個原型物件,constructor會指向object而不是該物件。person.prototype var person new person true 將1注釋之後輸出...