1)JS中可以為物件定義三種類型的方法:私有方法、實例方法、類別方法,與Java類似:
私有方法只能在物件內部使用
#實例方法必須在物件實例化後才能使用
類別方法可以直接透過類別名稱去使用
#注意:方法的定義不能透過前面所說的index方式進行。
2)定義私有方法
私有方法必須在建構函式體內定義,而且只能在建構函式體內使用。
語法格式:function methodName(arg1,…,argN){ }
#例如:
function User(name){ this.name=name; function getNameLength(nameStr){ return nameStr.length; } this.nameLength=getNameLength(this.name); }
3)定義實例方法,目前也可以使用兩種方式:
prototype方式,在建構子外使用,語法格式:
functionName.prototype.methodName=method;
或
functionName.prototype.methodName= function(arg1,…,argN){};
this方式,在建構子內部使用,語法格式:
this.methodName=method;
或
this.methodName=function(arg1,…,argN){};
上面的語法描述中,method是外部已經存在的一個方法,methodName要定義的物件的方法,意思是將外部的一個方法直接賦給物件的某個方法。
以function(arg1,…,argN){}的方式定義物件方法是開發人員應該掌握的。
定義實例方法的一些範例:範例1
function User(name){ this.name=name; this.getName=getUserName; this.setName=setUserName; } function getUserName(){ return this.name; } Function setUserName(name){ this.name=name; }
定義實例方法的一些範例:範例2
function User(name){ this.name=name; this.getName=function(){ return this.name; }; this.setName=function(newName){ this.name=newName; }; }
定義實例方法的一些範例:範例3
#function User(name){ this.name=name; } User.prototype.getName=getUserName; User.prototype.setName=setUserName(); function getUserName(){ return this.name; } Function setUserName(name){ this.name=name; }
定義實例方法的一些例子:範例4
4)定義類別方法
類別方法需要在建構子外定義,可以直接透過建構函式名稱對其進行引用。
語法格式:
functionName.methodName=method;
或
functionName.methodName=function(arg1,…,argN){};
範例:
function User(name){ this.name=name; } User.getMaxAge=getUserMaxAge; function getUserMaxAge(){ return 200; }
或
User.getMaxAge=function(){return 200;}; alert(User.getMaxAge());
以上是javascript自訂物件的三種類型方法程式碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!