一個能說明問題的js的原型 prototype的例項--簡單易懂

瓜瓜東西發表於2014-08-04
<script type="text/javascript">
	var i = 0;//標識是第幾次生成的Traingle物件。
	function Polygon() {
		Polygon.prototype.getArea = function() {
			return "Polygon getArea()";
		}
	}
	function OtherPolygon() {
		OtherPolygon.prototype.getArea = function() {
			return "OtherPolygon getArea()";
		}
	}

	function Triangle() {
		if (i == 0) {
			Triangle.prototype = new Polygon();
		} else if (i == 1) {
			Triangle.prototype = new OtherPolygon();
		}
		i++;
	}

	Triangle.prototype.getArea = function() {
		return "Triangle getArea()";
	}

	var triangle1 = new Triangle();
	//第一次生成時,使用的是原始的prototype,結果為"Traingle getArea()",
	//並執行了Triangle.prototype = new Polygon();語句。
	alert(triangle1.getArea());
	var triangle = new Triangle();
	//第二次生成時,使用的是修改後的prototype(new Polygon()),結果為"Polygon  getArea()",
	//並執行了Triangle.prototype = new OtherPolygon();語句。
	alert(triangle.getArea());
	var triangle = new Triangle();
	//第三次生成時,使用的是修改後的prototype(new OtherPolygon()),結果為"OtherPolygon  getArea()",
	alert(triangle.getArea());
</script>

相關文章