JS難點 物件導向 封裝

2022-07-18 08:00:16 字數 2587 閱讀 3760

我覺得js的難點之一就是物件導向程式設計。

它在寫法上比面向過程相對來說複雜一些;

從廣義上說,"一切皆物件";狹義上說,是一種復合資料型別object。

①:直接字面量  {}

var person=

};person.height='180cm';

person.interset=function

();

②:使用關鍵字new

new object()

var person1=new

object();

person1.name='jack';

person1.age=18;

person1.playgame=function

();

描述物件的特徵

②:新增方法

(方法的值為函式)

實現物件的一些功能

①:把變數寫作屬性;

②:會把功能寫成乙個函式;

③:這個函式是在物件身上的;

④:物件身上的功能可以繼承。

//

工廠方式

function

createperson(name,age)

return

obj;

}

var p1=createperson('jackson',30);

var p2=createperson('jack',18);

p1.say();

p2.say();

建立並初始化物件的函式,並且要用new來呼叫函式,不用new呼叫的話與普通的函式就沒有區別

通過建構函式new出來的物件叫例項,創造物件的過程叫例項化

建構函式存在乙個問題:效能問題會造成資源浪費

function

person(name,age);

}var p1=new person('jackson',30); //

乙個例項

p1.say();

var p2=new person('jack',18); //

乙個例項

p2.say();

函式身上的屬性,每乙個函式身上都有這個屬性,它的值是乙個物件

它身上可以放屬性與方法,如果與建構函式相結合的話,通過建構函式建立的物件就會具有它身上的屬性與方法

物件是通過建構函式建立的,那prototype就是這個物件的原型物件

建議把一些公用的屬性或者方法都放到建構函式的原型身上,這樣就可以解決建構函式的效能問題。

物件身上的屬性,每乙個物件身上都會有這個屬性。它的值也是乙個物件,它的值就是它對應的建構函式的prototype的值

物件.__proto__===建構函式.prototype

function

person(name,age)

person.prototype.gender='男';

person.prototype.say=function

();

var p1=new person('jackson',30); //

乙個例項

var p2=new person('jack',18); //

乙個例項

console.log(p1.__proto__===person.prototype); //

true

物件與原型之間的關係(鏈結)

原型鏈查詢規則

當我們呼叫乙個物件身上的屬性或者方法的時候,它就會有乙個查詢規則

①:首先會在自身去找,如果有的話就用自己的;

②:如果沒有的話,它就在該物件的__proto__下查詢,因為__proto__這個屬性是指向對應的建構函式身上的protytpe,把它查詢的時候找的就是建構函式的原型

③:如果原型身上也沒有的話,那它會繼續往外面找,直到找到最頂層的object身上的prototype,如果都沒有,則返回undefined

function

建構函式()

建構函式.prototype.方法=function

(){}

var 例項物件=new

建構函式();

例項物件.方法();

概念:每個物件身上都會有這個屬性,預設指向該物件對應的建構函式

這個屬性不是放在物件身上,放在對應的原型物件身上

作用:檢視物件的建構函式

語法:物件.constructor

返回值:物件的建構函式

問題:這個屬性是可以被修改的,所以最好重新指向一下

function

coder(name)

coder.prototype=;

js 物件導向 封裝

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

js物件導向 封裝

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

js 物件導向 封裝

物件導向 程式中都是先用物件解構來描述現實中乙個具體事物的屬性和功能,然後按需使用物件中的屬性和功能。為了大量資料的使用和維護 封裝,繼承,多型 一 封裝 建立乙個物件,集中儲存現實中乙個事物的屬性和功能 為了大量資料的使用和維護 何時 今後只要使用物件導向,第一步都是建立物件,集中儲存事物的屬性和...