首頁  >  文章  >  web前端  >  javascript 物件導向程式設計基礎:封裝

javascript 物件導向程式設計基礎:封裝

高洛峰
高洛峰原創
2017-01-04 09:30:211270瀏覽

很長一段時間以來(這裡本人要幸災樂禍地說),js是「一種點綴的作用,完成很有限的功能,諸如表單驗證之類,其語言本身也一直被當作過程化的語言使用,很難完成複雜的功能。但是(這裡本人要苦大仇深、痛心疾首地說),「而Ajax的出現使得複雜腳本成為必需的組成部分,這就對JavaScript 程式設計提出了新的要求,很多Ajax應用開始利用JavaScript面向對象的性質進行開發,使邏輯更加清晰。額的神啊,本來就不想學不敢學的,現在不得不硬著頭皮學了。 
這裡關於對象就廢話這麼多了。我們都知道物件導向程式設計的三個主要特點是:封裝、繼承和多型。以下就圍繞著這三個特點,記錄一些學習心得。 
好的,先從封裝性開始介紹,眾所周知,物件是封裝的最基本單位。封裝防止了程序相互依賴性而帶來的變動影響。物件導向的封裝比傳統語言的封裝更為清晰、更有力。 Code is cheap.來看簡單的程式碼: 

// 定義函數的方式定義類別 
function class1() { 
// 類別成員的定義與建構子 
// 這裡class1 既是一個函數也是一個類別。作為函數,它可以理解為類別的建構函數, 負責初始化的工作。


// 使用new運算元得到一個類別的實例 
var obj = new class1(); 
/* 拋開類別的概念,從程式碼的形式來看,class1 就是一個函數,那麼是不是所有的函數都可以用new來操作呢?答案是肯定的。 
在JavaScript 中,函數和類別就是一個概念,當new 一個函數時,就會傳回一個物件。如果這個函數中沒有初始化類別成員,那就會傳回一個空的物件。 
事實上,當new一個函數時,這個函數就是所代表類別的建構函數,其中的所有程式碼都可以看作為了初始化一個物件而工作。用於表示類別的函數也稱之為構造器。
在JavaScript 中,每個物件都可以視為多個屬性(方法)的集合 
*/ 

function test() { 
alert( typeof (obj)); 




















了一個類class1,這就是js中簡單的封裝,下面我們看js如何定義“靜態類”, 

function class1() { // 構造函數 

// 靜態屬性 
class1.staticProperty = " test " ; 
// 靜態方法 
class1.staticMethod = function () { 
alert(class1.staticProperty); 


function test() { 
/// . class1)); 



接著看「抽象類別」: 

/* 
在傳統物件導向語言中,抽象類別中的虛方法必須先被聲明,但可以在其他方法中被呼叫。 
而在JavaScript 中,虛方法就可以看 該類別中沒有定義的方法,但已經透過this 指標使用了。 
和傳統物件導向不同的是,這裡虛方法不需經過聲明,而直接使用了。這些方法會在衍生類別 
中實作 
*/ 

// 定義extend 方法 
Object.extend = function (destination, source) { 
for (property in source) { 
destination[property];

return destination; 

Object.prototype.extend = function (object) { 
return Object.extend.apply( this , [ this , object]) 
} «建構子 
function base() { } 
base.prototype = { 
initialize: function () { 
this .oninit(); // 呼叫了一個虛擬方法 

} { 
// 建構子 

// 讓class1繼承於base 並實作其中的oninit方法 
class1.prototype = ( new base()).extend({ 
oninit: function () { // 實作抽象基底類別中的oninit 虛方法 
// oninit 函數的實現 

}); 

我們看到,上面“讓class1繼承於base 並實現其中的oninit方法時”,使用了“繼承”的概念,請留意。再來看看執行的效果: 

function test() { 

var obj = new class1(); 
obj.oninit = function () { alert( " test " ); } 

🎜🎜🎜🎜更多javascript 物件導向程式設計基礎:封裝相關文章請關注PHP中文網! 🎜🎜🎜🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn