javascript継承実現の一つの方法(議論を歓迎し、改善・最適化する)
2181 ワード
以下では、jsの継承実現を実証しましたが、個人の力には限りがあります.みんなで議論してください.もっといい方法がありますか?
または他のブラウザに問題があるかどうかをテストします.
または他のブラウザに問題があるかどうかをテストします.
<html>
<head><script>
/**
* js
* ---
* :shape
* :Rectangle
* ---
**/
function Shape()
{
if(typeof Shape._init =='undefined')
{
//
Shape.prototype.Draw = function()
{
return "draw a shape";
}
//
//
Shape.prototype.ToString = function()
{
return "this is a shape";
}
Shape.prototype.Alert = function()
{
alert(this.Draw() + " and " + this.ToString());
}
//
Shape._init = true;
}
}
/**
*
*/
// ( ), .
// Rectangle.prototype = new Shape() function Rectangle ,
// , Rectangle Shape,
// , IE7,Opera 10.10,Safari 4.0.4 , , ,
// !
// , Rectangle.prototype = Shape.prototype , , .
// call,apply ? , , , js
// .
// , , , !
Rectangle.prototype = new Shape();
function Rectangle()
{
if(typeof Rectangle._init == 'undefined')
{
Rectangle.prototype.Draw = function()
{
return "draw a rectangle";
}
//
Rectangle._init = true;
}
}
/**
* Main
*/
function Main()
{
Main.prototype.main = function()
{
var shape = new Shape();
shape.Alert();
var rectangle = new Rectangle();
alert(rectangle.ToString());//
alert(rectangle.Draw());//
rectangle.Alert();// ( ).
}
}
var javascriptMain = new Main();
javascriptMain.main();
</SCRIPT></head>
<body>onload</body>
</html>