## 一、Javascript中“類”的定義方式
1、
~~~
function Person(name,age)
{
this.age=age;
this.name=name;
this.show=function()
{
return ("my name is "+this.name+",and my age is "+this.age);
}
}
var per = new Person("yuan",20);
alert(per.show());
~~~
2、
~~~
function Person(name,age)
{
var o = new Object;
o.name=name;
o.age=age;
o.show=function()
{
return ("my name is "+o.name+",and my age is "+o.age);
}
return o;
}
var per = new Person("yuan",20);
alert(per.show());
~~~
3、
~~~
var per=
{
name:"yuan",
age:20,
show:function()
{
return ("my name is "+this.name+",and my age is "+this.age);
}
}
alert(per.show());
~~~
以上三種方式的輸出結果相同。
## 二 、獲取構造器方法
?所有構造器均是類,但并非所有類是構造器。內建類都是用構造器創建對象,而宿主對象(window等)則不是,對于實例對象而言,利用其constructor屬性,可獲取構造器方法:
~~~
function Person(name,age)
{
this.name=name;
this.age=age;
this.show=function()
{
return ("my name is "+this.name+",and my age is "+this.age);
}
}
var per = new Person("yuan",20);
alert(per.constructor);
~~~
運行結果:

內建類和宿主對象的constructor屬性不能得到構造方法。
## 三 、使用prototype屬性定義方法和屬性
? 除了在類的構造器定義方法和屬性外,也可以用prototype定義。
~~~
<span style="font-size:18px;">function Person(){}
Person.prototype.name="yuan"; //定義屬性
Person.prototype.age=20;
Person.prototype.show=function() //定義方法
{
return ("my name is "+this.name+",and my age is "+this.age);
}
var per = new Person;
alert(per.show());</span>
~~~
## 四 、類的成員的訪問控制
? 1、public成員:使用this和prototype定義的屬性和方法是公共成員,可以在腳本的任何位置訪問
? 2、private成員:定義屬性用var,定義方法時采用命名函數或者匿名函數
- 前言
- 一
- 二:變量
- 三:數據運算
- 四:流程控制
- 五:內建的全局函數
- 六:自定義函數
- 七:面向對象編程(OOP)
- 八:靜態成員、靜態類、枚舉、重載和覆蓋
- 九:原型鏈本質論
- 十:ECMAScript 5 增強的對象模型
- 十一:處理字符串---String類和正則表達式
- 十二:數組、多維數組和符合數組(哈希映射)
- 十三:處理日期和時間
- 十四:JavaScript內建類
- 十五:BOM之源---window對象
- 十六:BOM之源---BOM基本應用
- 十七:BOM新成就(1)--客戶端存儲數據(Storage實現)
- 十八:BOM新成就(1)--客戶端存儲數據(Web SQL DataBase實現)
- 十九--HTML5 DOM新標準---處理文檔元信息和管理交互能力
- 二十---XMLHttpRequest和AJAX解決方案