Javascript 中面向對象的思想

1 js中一個函數就是一個類,可以將它理解為類的構造函數,負責初始化工作。

2 可以通過new的操作符獲得一個類的實例。

例如:

//定義一個hello函數
function hello(){
alert(“hello”);
}
//通過new一個函數獲得一個對象
var obj=new hello();
alert(typeof(obj));

3 對象的屬性和方法

其他語言中,對象一旦生成,就不可更改,要為一個對象添加、修改成員必須要在對應的類中修改,並重新實例化,程序也必須重新編譯。JavaScript提供瞭靈活的機制來修改對象的行為,可以動態添加、修改、刪除屬性和方法。例如:先用類Object來創建一個空對象user:

var user=new Object();

(1) 獲取屬性或方法

a) 對象名.屬性(方法)名

b) 對象名[“屬性(方法)名”]

(2) 添加屬性

a) 添加屬性:

user.name=”jack”;

user.age=21;

user.sex=”male”;

b) 添加方法

user.alert=function(){

alert(“myname is:”+this.name);

}

(3) 修改屬性和方法

修改一個屬性和方法的過程就是用新的屬性替換舊的屬性,例如:

user.name=”tom”;

user.alert=function(){

alert(“hello,”+this.name);

}

(4) 刪除屬性和方法

刪除一個屬性和方法的過程也很簡單,就是將其置為undefined:

user.name=undefined;

user.alert=undefined;

這樣就刪除瞭name屬性和alert方法。

4 無類型對象

傳統的面向對象語言中,每個對象都會對應到一個類。上一節講this指針時提到,JavaScript中的對象其實就是屬性(方法)的一個集合,並沒有嚴格意義上類的概念。所以它提供瞭一種簡單的方式來創建對象,即大括號({})語法:

{

property1:statement,

property2:statement2,

…,

propertyN:statmentN

}

通過大括號括住多個屬性或方法及其定義(這些屬性或方法用逗號隔開),來實現對象的定義,這段代碼就直接定義個瞭具有n個屬性或方法的對象,其中屬性名和其定義之間用冒號(:)隔開。

5 prototype原型對象

prototype 對象是實現面向對象的一個重要機制。每個函數(function)其實也是一個對象,它們對應的類是“Function”,但它們身份特殊,每個函數對象都具有一個子對象prototype。即prototype表示瞭該函數的原型,而函數也是類,prototype就是表示瞭一個類的成員的集合。當通過 new來獲取一個類的對象時,prototype對象的成員都會成為實例化對象的成員。

發佈留言