<html>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
>
<title>test</title>
</head>
<body>
<script>
//物件建構函式
function
Atest(name){
//私有屬性,只能在物件建構函式內部使用
var
className =
"Atest"
;
//公有屬性,在物件例項化後呼叫
this
.name = name;
//物件方法
this
.hello =
function
(){
alert(
this
.name);
alert(
this
.msg());
//使用原型方法擴充的方法可以在類內部使用
alert(
this
.sex);
//使用原型方法擴充的屬性可以在類內部使用
alert(Atest.age);
//靜態屬性呼叫時格式為[物件.靜態屬性]
}
}
//類方法 (實際是靜態方法直接呼叫) 位置:Person類的外部 語法格式:類名稱.方法名稱 = function([引數...]){ 語句行; }
Atest.Run =
function
(){
alert(
"我是類方法 Run"
);
}
//原型方法
Atest.prototype.msg =
function
(){
alert(
"我的名字是:"
+
this
.name);
//如果原型方法當作靜態方法直接呼叫時,this.name無法被呼叫
}
//公有靜態屬性 在類的外部
Atest.age = 20;
//公有靜態屬性不能使用 【this.屬性】,只能使用 【物件.屬性】 呼叫
//原型屬性,當作是類內部的屬性使用【this.原型屬性】,也可以當成公有靜態屬性使用【物件.prototype.原型屬性】
Atest.prototype.sex =
"男"
;
Atest.Run();
//類方法也是靜態方法,可以直接使用 【物件.靜態方法()】
Atest.prototype.msg();
//原型方法當成靜態方法使用時【物件.prototype.方法()】
alert(Atest.prototype.sex);
//原型屬性當作靜態屬性使用時【物件.prototype.方法()】
var
a =
new
Atest(
"zhangsan"
);
//物件方法和原型方法需要例項化物件後才可以使用
a.hello();
//物件方法必須例項化物件
a.msg();
//原型方法必須例項化物件
alert(a.age):
//錯誤,公有靜態屬性只能使用 【物件.屬性】呼叫
//ps:儘量將方法定義為原型方法,原型方法避免了每次呼叫建構函式時對屬性或方法的構造,節省空間,建立物件快.
</script>
</body>
</html>