日期:2014-05-16 浏览次数:20464 次
function Polygon(iSides){ this.sides = iSides; if(typeof Polygon._initialized == "undefined") { Polygon.prototype.getArea = function(){ return 0; }; Polygon._initialized = true; } } function Triangle(iBase , iHeight){ Polygon.call(this , 3); this.base = iBase; this.height = iHeight; // Triangle._initialized 定义Triangle类的常量(与java中的静态常量类式) if(typeof Triangle._initialized == "undefined"){ // 错误的,可以对prototype的状态进行修改,但重新定义prototype,只会在未来的对象中实现,但这时对象已经生成,所以prototype中将保持原有的状态存在于已生成的对象中,所以alert(triangle.getArea())会报错。 //Triangle.prototype = new Polygon(); Triangle.prototype.getArea = function(){ return 0.5 * this.base * this.height; } Triangle._initialized = true; } } function myload(){ // 这种方式调用是错误的,Triangle._initialized为类常量,不可使用 //alert(triangle._initialized); var triangle = new Triangle(12 , 4); //alert(triangle._initialized); alert(triangle.sides); alert(triangle.getArea()); }