物件 是什麼?
物件就是乙個整體,對外提供一些操作,比如:電視機(不用知道內部的構造,只知道怎麼用)
物件導向 是什麼?
使用物件時,只關注物件提供的功能,不關心內部細節,比如:操作電視機(只知道用遙控器控制)
js的物件導向
特點:1.抽象:抓住問題的核心
2.封裝:不考慮內部細節,只考慮外部使用
3.繼承:從已有的物件上,繼承新的物件
·多重繼承
·多型(少用)
物件的組成: | var cat = ;
var cat2 = new
object();
cat2.name="小明";
cat2.show = function
();//
呼叫cat1.show(); //
我的名字叫:小妮
cat2.show(); //
我的名字叫:小明
這時候如果想建立多乙個物件,需要把上面的整個copy多一次,但這造成很多重複,超級亂。所以有了第二種高階,建構函式
二、建構函式
functioncat(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()
言歸正傳,上面的例子改寫為:
functioncat(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個物件,但是靜態資料...