完整的例子: 使用對象和繼承等的示範
//父類樣本
function Parent(students, teacher) {
//公有成員
this.name = teacher;
this.students = students;
this.teacher = teacher;
//私人成員
//_me 處理範圍的特殊變數
var _me = this;
var _year;
//建構函式定義的末尾執行
function constructor() {
_year = 1900;
}
//公有方法
this.getName = function () {
this.pubMe1();
return this.name;
};
//公有方法,特權方法可以訪問私人和公有成員
this.getYearBorn = function () {
_disp();
return _year;
};
//私人方法
function _disp(){
alert(_me.name);
alert(_year);
}
var _disp2 =function(){
alert(_me.name);
alert(_year);
};
constructor();
}
//公有方法的另一種定義
Parent.prototype.pubMe1 = function () {
//只能訪問執行個體成員
alert(this.name);
};
//靜態成員和方法
Parent.TITLE = 'static';
Parent.StaticMe = function () {
alert(this.TITLE);
};
//子類樣本
function Child(students, teacher) {
//構造傳遞
Parent.apply(this, arguments);
this.cld = students;
var _pri = teacher;
this.DoChild = function () {
alert(this.cld + _pri);
alert(this.name);
};
}
//原形繼承法
Child.prototype = new Parent();
Child.prototype.constructor = Child;
// Create a new Parent object
var p = new Parent(["John", "Bob"], "Mr. Smith");
alert(p.getName());
alert(p.getYearBorn());
p.pubMe1();
Parent.StaticMe();
var c = new Child("c", "p");
c.DoChild();
完整例子:函數對象的擴充封裝形式
function Parent(name) {
var _pri = "pri" + name;
var priMethod = function(){
alert(_pri);
};
return{
pub : name,
pubMethod : function () {
alert(this.pub);
alert(_pri);
priMethod();
}
};
}
Parent.TITLE = 'static';
Parent.StaticMe = function () {
alert(this.TITLE);
};
alert(Parent.TITLE);
var d =new Parent('demo');
d.pubMethod();
Parent.StaticMe();
這種形式由於範圍的限制,最好不要實現繼承
完整的例子包括DOJO jQuey ExtJS MS AJAX的整合套件例子可在如下地址下載:
http://jsfkit.codeplex.com/Project/Download/FileDownload.aspx?DownloadId=153492
http://jsfkit.codeplex.com/releases/53146/download/153653