js不是面向對象的語言,函數和類都是用function來定義的。
定義類的方法也有很多種:
1.工廠方法:
function person()
{
var tempperson = new object;
tempperson.name = "jack";
tempperson.sex = "man";
tempperson.showperson = function{alert(this.name+this.sex);};
return tempperso
}
var preson1 = person();
var preson2 = person();
2.構造函數
function Person()
{
this.name = "jack";
this.sex = "man";
this.showperson = function{alert(this.name+this.sex);};
}
var preson1 = new person();
var preson2 = nwe person();
3.使用prototype屬性
function Person()
{
}
Person.prototype.name = "jack";
Person.prototype.sex = "man";
Person.prototype.showperson = function{alert(this.name+this.sex);};
var preson1 = new person();
var preson2 = nwe person();
4.混合工廠模式
function Person()
{
this.name = "jack";
this.sex = "man";
}
Person.prototype.showperson = function{ alert(this.name+this.sex); };
var preson1 = new person();
var preson2 = nwe person();
5.動態原型模式
function Person()
{
this.name = "jack";
this.sex = "man";
if (typeof Person._initlialized == "undefined")
{
Person.prototype.showperson = function{ alert(this.name+this.sex); };
}
Person._initliazed = true;
}
Person.prototype.showperson = function{ alert(this.name+this.sex); };
var preson1 = new person();
var preson2 = nwe person();
6.類中的公有私有屬性
function Person ()
{
var name = "jack";----私有屬性
var sex = "man";
this.Xname = "jack";----公有屬性
this.Ysex = "man";
}
Person.name 是不能訪問的。
Person.Xname 是可以訪問的。
7.js中的構造函數,靜態方法和靜態屬性
function Person (fname, fsex)
{
var _this = this;
var name = "";----私有屬性
var sex = "";
_this.Xname = "";----公有屬性
_this.Ysex = "";
var init=function() ----私有方法
{
name = fname;
sex = fsex;
_this.Xname = fname;
_this.Ysex = fsex;
}
init();
}
Person.count=0;---靜態屬性;
Person.getname =function(){}; ---靜態方法;
通過init()函數可以實現構造函數的功能了