书中讲动态原型继承实现继承,给了一段错误代码function Polygon(sides){ this.sides = sides; if(typeof Polygon._initialized == "undefined"){ Polygon.prototype.getName = function(){ return "dash";
} alert(Polygon._initialized); Polygon._initialized = true;
}
}function Triangle(base, height){ Polygon.call(this,3); this.base = base; this.height = height; if(typeof Triangle._initialized == "undefined"){
**;** Triangle.prototype.getArea = function(){ return 0.5 * this.base * this.height;
}
Triangle._initialized = true;
}
}window.onload = function(){ var ri = new Triangle(10,20); var tri = new Triangle(20,40); alert(ri.getArea()); alert(ri.getName()); alert(ri.sides);
alert(tri.getArea());
alert(tri.getName()); alert(tri.sides);
}粗体部分的代码有错,书中原文解释:从逻辑上讲,这个位置是正确的,但从功能上讲,却是无效的.从技术上 说,在代码运行前,对象已经被实例化,并与原始的prototype对象联系在一起了.虽然用极晚绑定可使对原型对象的修改正确地反映出来,但替换 prototype对象不会对该对象产生任何影响.只有未来的对象(第二个以后的对象)实例才会反映出这种改变,这就使第一个实例变得不正确。
添加回答
举报
0/150
提交
取消