OO鐨凧avaScript騫朵笉楂樻繁錛岄夯鐑﹀氨楹葷儲鍦╣oogle鍑烘潵鐨勫浗浜轟粙緇嶆枃绔犵粡甯哥綏緗楀棪鍡︼紝鑰屼笖涔嬮棿鐨勮娉曡繕鍚勬湁涓嶅悓錛屾憜鍦ㄤ竴璧峰氨璁╀漢鐪嬩簡澶村ぇ銆?br /> 榪欓噷閲嶆嬀綆鍗曚富涔夛紝浠ヤ竴涓渶綆鍗曠殑渚嬪瓙鎶奜O Javascript璇存槑鐧姐?/p>
1.涓涓涓虹簿綆鐨勪緥瀛?/p>
鍙渶鐞嗚В涓変釜鍏抽敭瀛?
絎竴涓槸function 錛孞S涓栫晫閲孋lass鐨勫畾涔夌敤"function"錛宖unction閲岄潰鐨勫唴瀹瑰氨鏄瀯閫犲嚱鏁扮殑鍐呭銆?/p>
絎簩涓槸this鎸囬拡錛屼唬琛ㄨ皟鐢ㄨ繖涓嚱鏁扮殑瀵硅薄銆?/p>
絎笁涓槸prototype錛岀敤瀹冩潵瀹氫箟鎴愬憳鍑芥暟錛?姣旇緝瑙勮寖鍜屼繚闄┿?br />
//瀹氫箟Circle綾伙紝鎷ユ湁鎴愬憳鍙橀噺r錛屽父閲廝I鍜岃綆楅潰縐殑鎴愬憳鍑芥暟area()
function Circle(radius)
{
this.r = radius;
}
Circle.PI = 3.14159;
Circle.prototype.area = function( ) {return Circle.PI * this.r * this.r;}
//浣跨敤Circle綾?br />
var c = new Circle(1.0);
alert(c.area());
鍙﹀鎴愬憳鍑芥暟瀹氫箟榪樺彲浠ュ啓鎴愯繖鏍?
function compute_area(){return Circle.PI * this.r * this.r;}
Circle.prototype.area=compute_area;
2.緇ф壙
娉ㄦ剰涓ょ偣
1.瀹氫箟緇ф壙鍏崇郴 ChildCircle.prototype=new Circle(0); 鍏朵腑0鏄崰浣嶇敤鐨?br />
2.璋冪敤鐖剁被鐨勬瀯閫犲嚱鏁?
this.base=Circle;
this.base(radius);
//瀹氫箟ChildCircle瀛愮被
function ChildCircle(radius)
{
this.base=Circle;
this.base(radius);
}
ChildCircle.prototype=new Circle(0);
function Circle_max(a,b)
{
if (a.r > b.r) return a;
else return b;
}
ChildCircle.max = Circle_max;
//浣跨敤ChildCircle瀛愮被
var c = new ChildCircle(1);
var d = new ChildCircle(2);
var bigger = d.max(c,d);
alert(bigger.area());
3.var寮忓畾涔?br />
JS榪樻敮鎸佷竴縐峷ar Circle={raidus:1.0,PI:3.1415}鐨勫艦寮忥紝璇硶灝卞CSS鐨勫畾涔夈?br />
鍥犳濡傛灉Circle鍙湁涓涓疄渚嬶紝涓嬮潰鐨勫畾涔夋柟寮忔洿綆媧侊細
var newCircle=
{
r:1.0,
PI:3.1415,
area: function(){ return this.PI * this.r * this.r;}
};
alert(newCircle.area());
BTW.鍚冮ケ浜嗘拺鐫鍙互鐪嬬湅Rails甯︾殑OO Javascript搴?-Prototype
鍏跺疄錛孞avascript鐜板湪鐨勮娉曠湡鐨勪笉閫傚悎閭d箞鍒壄鐨勫啓鎴怬O妯″紡....