js 之物件導向

2022-07-16 10:30:10 字數 2107 閱讀 3692

物件 是什麼?

物件就是乙個整體,對外提供一些操作,比如:電視機(不用知道內部的構造,只知道怎麼用)

物件導向 是什麼?

使用物件時,只關注物件提供的功能,不關心內部細節,比如:操作電視機(只知道用遙控器控制)

js的物件導向

特點:1.抽象:抓住問題的核心

2.封裝:不考慮內部細節,只考慮外部使用

3.繼承:從已有的物件上,繼承新的物件

·多重繼承

·多型(少用)

物件的組成:                          |  var cat = ;

var cat2 = new

object();

cat2.name="小明";

cat2.show = function

();//

呼叫cat1.show(); //

我的名字叫:小妮

cat2.show(); //

我的名字叫:小明

這時候如果想建立多乙個物件,需要把上面的整個copy多一次,但這造成很多重複,超級亂。所以有了第二種高階,建構函式

二、建構函式

function

cat(name);

rerurn cat;}//

呼叫var cat1 = cat('小妮');

cat1.show();

//我的名字叫:小妮

var cat2 = cat('小明');

cat2.show();

//我的名字叫:小明

然而這種方式有個很大的缺點

alert(cat1.show == cat2.show); //

false

這就意味著,每乙個新建立的物件都擁有自己的乙個方法,儘管方法是一模一樣的。這件造成很大的浪費,佔據資源。所以有了第三種prototype模式

三、prototype模式

首先說一下什麼是prototype?

.box

//相信會點css的人也知道,第乙個顏色因為行間樣式變成blue,其與三個是white,原型的對應關係如下

//css js

//class(一次給一組加樣式) 原型

//style(一次給乙個加樣式) 給物件單獨加事件

再來點js例子:

var arr1 = new array(1,2,3,4);

var arr2 = new array(5,6,7,8);

array.prototype.sum = function ()

return

result;

};alert(arr1.sum());

alert(arr2.sum());

如果用  arr1.prototype.sum   arr2也要呼叫sum 將會報錯,當加在array共有的類上,才能共享。

同時要注意prototype是加在類上,方法是被物件呼叫  

//

錯誤: array.push();

//錯誤: new arr();

//正確: arr.push();

//正確: array.arr()

言歸正傳,上面的例子改寫為:

function

cat(name)

cat.prototype.show = function

();//

呼叫var cat1 = new cat('小妮');

var cat2 = new cat('小明');

cat1.show();

//我的名字叫:小妮

cat2.show(); //

我的名字叫:小明

alert(cat1.show == cat2.show );//

true

建構函式加屬性,原型加方法,這樣就解決了資源浪費。

以上就是乙個物件導向的寫法。

更新待續....... 

JS之物件導向

一,面對物件初始 為什麼要學習物件 1,js獲取頁面元素,操作頁面元素內容與樣式,資料面對物件思想讓運算元更加便捷與容易 優點 1,拓展性強,2,減少 冗餘3,降低成本 二,物件屬性解決迴圈繫結變數汙染問題 1,物件的 臨時 屬性可以幫助臨時資料的儲存,因為臨時資料的生命週期往往很短,需要提示臨時資...

java之物件導向

類是用於描述同一型別的物件的乙個抽象。類中定義了這一類物件所具有的靜態和動態屬性 靜態屬性 成員變數 動態屬性 方法 1 類可以看成是一類物件的模板,物件可以看成該類的乙個具體例項 2 首先必須定義類才能有物件 說到類,就不得不說構造其構造方法了 在new乙個物件是,呼叫的就是類中的構造方法 列如p...

static之物件導向

一 靜態資料成員子 includeusing namespace std class point int point num 0 定義靜態資料成員 int main 對於類的非靜態資料成員,每個類物件都有自己的拷貝。而對於靜態資料成員被當作是類的成員。就像上述例子中,雖然定義了4個物件,但是靜態資料...